OK, contrary to some information out there, the jms onMessage as part of Spring will process stomp as a text message. This post is misleading, at best:http://www.apacheserver.net/ActiveMQ-JMS-API-hangs-when-trying-to-start-connection-over-Stomp-at214579.htm
Below is an example of my configuration that actually allowed me to see the text message with the listener. {{{ <beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/> <!-- an embedded broker - monitor it at http://localhost:8161/admin--> <bean id="broker" class="org.apache.activemq.broker.BrokerService" init-method="start"> <property name="transportConnectorURIs"> <list> <value>tcp://localhost:9999</value> <value>stomp://localhost:9998</value> </list> </property> <property name="brokerName"> <value>myBroker</value> </property> </bean> <!-- JMS ConnectionFactory to use --> <bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory" depends-on="broker"> <property name="brokerURL" value="tcp://localhost:9999" /> </bean> <!-- Spring JMS Template --> <bean id="consumerJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="jmsFactory"/> </bean> <bean id="destination" class="org.apache.activemq.command.ActiveMQTopic" autowire="constructor"> <constructor-arg> <value>manager</value> </constructor-arg> </bean> <!-- a jms POJO consumer --> <bean id="consumer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsFactory" /> <property name="destination" ref="destination" /> <property name="messageListener" ref="messageListener"/> <!-- property name="messageSelector" value="type = 'a' or type = 'b'"/--> <property name="sessionTransacted" value="true"/> <!-- property name="cacheLevelName" value="CACHE_CONNECTION" --> <property name="clientId" value="jmsclient"/> </bean> <bean id="messageListener" class="org.jms.JmsSynchronousListener"> <property name="fileName" value="messageStore-"/> <property name="clientID" value="<myid>"/> <property name="messageType" value="type = 'a or type = 'b'"/> <property name="saveMessages" value="true"/> </bean> </beans> }}} python code: {{{ #!/usr/bin/env python import stomp import time import logging import sys logging.basicConfig() class MyListener(stomp.ConnectionListener): def on_error(self, headers, message): print('received an error %s' % message) def on_message(self, headers, message): for k,v in headers.iteritems(): print('header: key %s , value %s' %(k,v)) print('received message\n %s'% message) dest='/topic/manager' conn=stomp.Connection([('localhost',9998)]) print('set up Connection') conn.set_listener('somename',MyListener()) print('Set up listener') conn.start() print('started connection') conn.connect(wait=True) print('connected') conn.subscribe(destination=dest, ack='auto') print('subscribed') message='hello cruel world' conn.send(message=message, destination=dest,headers={'type':'a','MessageNumber':21},ack='auto') print('sent message') time.sleep(2) print('slept') conn.disconnect() print('disconnected') }}} I hope this saves someone a bunch of work and searching. -- View this message in context: http://activemq.2283324.n4.nabble.com/Just-receive-text-from-STOMP-in-java-tp2532079p2532135.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.