我在docker容器上运行ActiveMQ
服务器。
我正在使用AMQ_SCHEDULED_DELAY
标头来延迟消息。
import time
import sys
import stomp
class MyListener(stomp.ConnectionListener):
def on_error(self, headers, message):
print('received an error "%s"' % message)
def on_message(self, headers, message):
print "Time for message receive: %s", time.strftime('%H:%M:%S')
print('received a message "%s"' % message)
conn = stomp.Connection()
conn.set_listener('', MyListener())
conn.start()
conn.connect(wait=True)
conn.subscribe(destination='/queue/test', id=1, ack='auto')
print "Time for send message: %s", time.strftime('%H:%M:%S')
conn.send(body=' '.join(sys.argv[1:]), destination='/queue/test', headers={'AMQ_SCHEDULED_DELAY': 100000})
time.sleep(2)
conn.disconnect()
输出:
test@localhost$ python /tmp/test.py this is test
Time for send message: %s 14:03:34
Time for message receive: %s 14:03:34
received a message "this is test"
从输出来看,它似乎不起作用,或者我必须从ActiveMQ端更新一些内容。
答案 0 :(得分:3)
通过在activemq.xml中将broker schedulerSupport属性设置为true来启用它:
ResNum
http://activemq.apache.org/delay-and-schedule-message-delivery.html