如何使用Python Stomp.py客户端安排ActiveMQ中的延迟消息



我正在使用python sompt.py访问我的 ActiveMQ服务器。

我创建了客户端并发送数据。但是我必须安排延迟消息。

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('received a message "%s"' % message)
conn = stomp.Connection()
conn.set_listener('', MyListener())
conn.start()
conn.connect('admin', 'password', wait=True)
conn.subscribe(destination='/queue/test', id=1, ack='auto')
conn.send(body=' '.join(sys.argv[1:]), destination='/queue/test')
time.sleep(2)
conn.disconnect()

我检查Java示例,用户可以通过headerssend也将headers作为stomp.py中的参数,但我不知道我必须传递哪个键。

stomp.constants没有延迟的标题。

尝试了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"

通过Stomp发送计划的消息的值匹配经纪人Java代码中值的定义,但是作为快速参考,您可以查看Apache NMS NMS Stomp网站以获取快速例子。

值如下:

"AMQ_SCHEDULED_DELAY" = delay in milliseconds
"AMQ_SCHEDULED_PERIOD" = repeat period in milliseconds
"AMQ_SCHEDULED_REPEAT" = repeat count
"AMQ_SCHEDULED_CRON" = cron entry such as "0 * * * *"

最新更新