[Solved] Python JMS Stomp client and Apache ActiveMQ – Listener does not work

I have a JMS client written in python using Stomp. I’m running Apache activemq 5.10.0.

I have a queue called TEST, and the client I have prints log messages saying that it is reading messages from the queue, but the print statements in my onMessage method do not work. ActiveMQ shows that the client has read the message, and the logger in the Stomp lib prints a message, but the onMessage() print statements do not show up.

Any suggestions?

Here is the code:

import time
import sys
import logging
import stomp
from stomp import ConnectionListener

queuename = sys.argv[1]

logging.basicConfig( level=logging.DEBUG)

class MyListener(ConnectionListener):
    message_count = 0
    def on_error(self, headers, message):
        print 'received an error %s' % message

    # onMessage is WRONG - should be on_message
    # def onMessage(self, headers, message):
    def on_message(self, headers, message):
        print headers
        print str(message)
        print type(message)
        print "Message %d" %(message_count)
        message_count = message_count + 1
        print 'received a message ...%s...' % message

conn = stomp.Connection()
conn.set_listener('', MyListener())

queue = '/queue/%s' % queuename
print "Queue is [%s]" % queue
print "subscribe: %s" % conn.subscribe
conn.subscribe(destination=queue, id=123421, ack='auto')

while 1:
Enquirer: mikeb


Solution #1:

Found it, of course about 30 minutes after posting.. The method onMessage should be on_message.

This was example code that I modified and was not correct.

Make that change and it works fine.

Respondent: mikeb

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Leave a Reply

Your email address will not be published.