我是 python 和 pika 的新手,我遇到了使用 BlockingConnection 适配器从队列中消费的问题,该适配器在几个小时后不断抛出异常。
因此,我现在尝试使用 SelectConnection(异步)适配器,但我只能找到在类中使用此适配器类型的示例,并且使用基于类的代码目前有点超出我的理解。
我确实找到了一个示例,该示例显示了如何使用 SelectConnection 创建生产者,但我找不到一个让我恼火的消费者示例,因为我原以为 pika 网站会详细介绍基本的生产者和消费者,而不仅仅是一个制作人...
生产者代码如下,取自 pika 网站(为什么他们没有包含基本消费者的示例超出了我的范围......):(http://pika.readthedocs.io/en/latest/examples/comparing_publishing_sync_async .html )
import pika
# Step #3
def on_open(connection):
connection.channel(on_channel_open)
# Step #4
def on_channel_open(channel):
channel.basic_publish('test_exchange',
'test_routing_key',
'message body value',
pika.BasicProperties(content_type='text/plain',
delivery_mode=1))
connection.close()
# Step #1: Connect to RabbitMQ
parameters = pika.URLParameters('amqp://guest:guest@localhost:5672/%2F')
connection = pika.SelectConnection(parameters=parameters,
on_open_callback=on_open)
try:
Step #2 - Block on the IOLoop
connection.ioloop.start()
Catch a Keyboard Interrupt to make sure that the connection is closed cleanly
except KeyboardInterrupt:
# Gracefully close the connection
connection.close()
# Start the IOLoop again so Pika can communicate, it will stop on its own when the connection is closed
connection.ioloop.start()
谁能建议我如何将这段代码修改为“消费”而不是“生产”,或者你能指出任何只使用基本函数而不是基于类的例子的例子,我发现了很多例子但没有用出于我的特殊目的...
谢谢你。(正如您可能从我的问题的语气中了解到的那样,我现在凌晨 4 点有点压力,我一直在努力解决这个问题好几个小时!)