1.首先安装stomp模块
https://pypi.org/project/stomp.py/#files
pip install stomp.py
2.查看官方文档
http://jasonrbriggs.github.io/stomp.py/quickstart.html
import time
import sys
import stomp
class MyListener(stomp.ConnectionListener):
def on_error(self, frame):
print('received an error "%s"' % frame.body)
def on_message(self, frame):
print('received a message "%s"' % frame.body)
conn = stomp.Connection()
conn.set_listener('', MyListener())
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()
3.本地安装ActiveMQ测试
安装参考:https://blog.youkuaiyun.com/Mr_haixin/article/details/80418204
其中报错参考:https://blog.youkuaiyun.com/gino725/article/details/78403303
这个错误,因为我本机账号不能修改所以使用上面的解决办法
实际上是用户连接有下划线,这里也贴到这:https://blog.youkuaiyun.com/qq_39056805/article/details/80749337
4.测试

5.区分queue和topic接收的区别试验
区别:https://blog.youkuaiyun.com/qq_21033663/article/details/52458305
- Queue
连续发送多个消息


启动接收
import time
import sys
import stomp
class MyListener(stomp.ConnectionListener):
def on_error(self, frame):
print('received an error "%s"' % frame.body)
def on_message(self, frame):
print('received a message "%s"' % frame.body)
conn = stomp.Connection()
conn.set_listener('gaofan', MyListener())
conn.connect('admin', 'password', wait=True)
conn.subscribe(destination='/queue/test', id=1, ack='auto')
time.sleep(20)
conn.disconnect()
结果收到了我刚刚发送的两条消息

在看状态,两条消息已接收
在程序运行期间发送消息,也能接收到。
- Topic
先启动程序
import time
import sys
import stomp
class MyListener(stomp.ConnectionListener):
def on_error(self, frame):
print('received an error "%s"' % frame.body)
def on_message(self, frame):
print('received a message "%s"' % frame.body)
conn = stomp.Connection()
conn.set_listener('gaofan', MyListener())
conn.connect('admin', 'password', wait=True)
conn.subscribe(destination='/topic/test', id=1, ack='auto')
time.sleep(20)
conn.disconnect()
在程序运行期间发送消息

结果
总结:
队列形式发送消息会保存,一旦消费者连接就能接收到
主题形式必须是连接期间才能收到发送的消息,不能保存
本文介绍了如何使用Python的stomp.py模块与ActiveMQ进行消息传递,并对比了队列(queue)与主题(topic)两种不同消息模式的特点及应用场景。
1598

被折叠的 条评论
为什么被折叠?



