RabbitMQ basic_publish是异步的吗?

时间:2017-12-01 12:18:01

标签: python rabbitmq pika

我有以下制作人代码。

消息是在某些计算后获得的dict数据。我想将消息发布到队列中。然后我将消息重置为空dict以进行其他一些计算。但消费者总是从队列中得到一个空的字典。我感觉消息在发布之前被重置(它是异步的吗?)。如何让它同步?

message = {a big dict ...}
channel.basic_publish(exchange='',
                            routing_key='my_queue',
                            body=json.dumps(message))
message = {}

1 个答案:

答案 0 :(得分:3)

是的,channel.basic_publish是异步的,并且以这种方式是正确的。

channel.tx_select channel.basic_publish(exchange='', routing_key='my_queue', body=json.dumps(message)) channel.tx_commit 不等待插入时间,否则,它会变慢。

您应该改变处理邮件的方式, 如果您想要同步,则可以使用交易。

应该是这样的:

{{1}}

注意交易可以降低表现。

Read here了解更多详情