我期待RabbitPy消费和发布消息。消费部分很好,但我想在对入站消息做一些事情之后将消息发送回特定队列。但是我无法在文档中找到这样做。
https://rabbitpy.readthedocs.io/en/latest/api/message.html
这是我的消费代码:
with rabbitpy.Connection('amqp://guest:guest@localhost:5672/%2f') as conn:
with conn.channel() as channel:
queue_read = rabbitpy.Queue(channel, QUEUE_NAME)
queue_write = rabbitpy.Queue(channel, QUEUE_NAME_RESPONSE)
# Exit on CTRL-C
try:
# Consume the message
for body in queue_read:
# do something on inboud...
以下是我只能在创建和发送消息时设置的内容:
message = rabbitpy.Message(channel, result)
message.publish(EXCHANGE, RESPONSE_ROUTING_KEY, mandatory=False)
没有任何与队列相关的内容。如何使用路由密钥将消息发送到特定队列?
在Pika我会使用以下内容:
channel = cnn.channel()
channel.exchange_declare(exchange=EXCHANGE, durable='True')
channel.exchange_declare(exchange=EXCHANGE, type='direct', durable='True')
channel.queue_declare(queue=QUEUE_NAME_RESPONSE, durable='True')
channel.queue_bind(exchange=EXCHANGE, queue=QUEUE_NAME_RESPONSE)
channel.basic_publish(exchange=EXCHANGE, routing_key=RESPONSE_ROUTING_KEY, body=return_JSON,properties=pika.BasicProperties(content_type='text/plain', delivery_mode=2))
channel.close()
我怎么能用RabbitPy做到这一点?
答案 0 :(得分:0)
使用EXCHANGE, RESPONSE_ROUTING_KEY
队列绑定。
例如
我们有2个队列,Queue1和Queue2。 1交换为Exchange和routingky为 routingkey1和routingkey2。
Exchange + routingkey1 ==> Queue1
Exchange + routingkey1 ==> Queue2
假设具有上述约束力。
当您的发布商使用Exchange + routingkey1
发送消息时,它将发送到队列1.如果发布者使用routingkey1
消息将发送到Queue2。
您可以使用Rabbitmq管理UI创建必要的绑定或构建代码。可以找到更多详细信息here
在Rabbitpy你可以做这样的事情,
amqp = rabbitpy.AMQP(channel)
amqp.queue_bind(queue='Queuq1', exchange='Exchange', routing_key='RoutingKey1')
答案 1 :(得分:0)
我可能通过将路由密钥绑定到交换机和队列来实现此目的。我有以下内容:
queue_write.bind(EXCHANGE, routing_key=RESPONSE_ROUTING_KEY, arguments=None)