在Pika / RabbitMQ中的consumer_callback中确认消息

hc2pp10m  于 2023-10-20  发布在  RabbitMQ
关注(0)|答案(1)|浏览(180)

我有一个设置,我希望能够在consumer_callback中的几行之后确认pika消息,然后继续执行一些更多的时间密集型任务。我已经写了一些代码来做这件事,但是看起来,只有在consumer_callback返回之后才能发送确认。我正在使用皮卡10与选择连接。
我想知道是否有一种方法可以实现这一点。到目前为止,我尝试的方法是:

  • 在当前回调中执行常规ACK-> ACK仅在回调返回后发送
  • 通过我专门为这种情况创建的不同连接/通道进行常规ack->失败,并显示“未知的交付标签”
  • 试图通过SelectConnection上的add_timeout方法偷偷地进入一个回调,然后在consumer_callback返回后立即调用->这会以某种方式扰乱队列通信,并且会发生非常奇怪的事情,所以我假设这不是正确的方法。

任何帮助都非常感谢。也许我需要不同的连接类型?

lokaqttq

lokaqttq1#

升级到Pika 0.12.0并遵循the example in this code, or do something similarlink
我使用不同的连接类型来实现这个示例,但您可以理解。Pika的ioloop必须在一个线程中运行,而你的时间密集型任务可以在另一个线程中进行。

相关问题