python - Python Paho 客户端如何从 RabbitMQ 现有队列中消费
问题描述
我有一个 RabittMQ 队列' test ',我必须使用 Paho 客户端编写一个 python 消费者来仅使用来自这个(' test ')队列的消息。
以下是我的消费者代码:
import paho.mqtt.client as mqtt
import json
server = "<machine_ip>"
port = 1883
username = "test"
password = "test"
#########################
client_id = "test_consumer"
topic = "test"
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe(topic)
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
data = str(msg.payload.decode());
print(data)
client = mqtt.Client(client_id)
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set(username,password)
client.connect(server, port, 60, bind_address="")
client.loop_forever()
但是当我开始消费者时,它正在创建一个新队列,如附加的屏幕截图所示,这是我不想要的。有什么解决方案吗?
解决方案
我不知道为什么 rabbitmq 为每个客户端(发布者或订阅者/消费者)创建一个队列,但如果你使用下面的参数,所有客户端都将使用相同的队列:
首先,你需要连接和订阅消费者:clean_session=False,并且订阅一个主题(例如'text')qos=1
您可以断开消费者(如果需要,模拟网络断开)
- 接下来,将您的发布者连接到: clean_session=False 并使用 qos=1,retain=False 发布到相同的主题('test')
推荐阅读
- reactjs - create-react-app 中的 serviceWorker.js 文件有什么用,为什么 serviceWorker.unregister(); 在 index.js 中?
- office-js - Office-js \\ Outlook 插件:Office.cast.item.toAppointment(Office.context.mailbox.item) 返回错误
- testing - 在测试中验证动态文本
- python - 我怎样才能为我想要的输出修复这个河内塔程序?
- html - 是否可以均匀分布宽度等于其内容的表格列?
- python - 线程之间共享的 Python 全局变量(使用 python-osc)
- javascript - javascript中的正则表达式解析
- angularjs - ng-repeat 行数据到列 angularjs
- vba - Visual Basic“格式”函数将以 A 结尾的十六进制值转换为时间
- c# - 内含 HTML 和代码块的服务器标签