在Pika / RabbitMQ中的consumer_callback内部确认一条消息

时间:2018-08-14 15:23:29

标签: python rabbitmq pika

我有一个设置,我希望能够在Consumer_callback内的几行之后确认一个pika消息,然后继续执行一些耗时的任务。我已经编写了一些代码来执行此操作,但似乎只有在Consumer_callback返回后才发出确认。我在SelectConnection中使用了pika 10。

我想知道是否有办法实现这一目标。到目前为止,我尝试过的方法是:

  • 在当前回调中执行常规确认->仅在回调返回后才发送确认
  • 通过我为此情况专门创建的其他连接/渠道进行常规确认->失败,并显示“未知的递送标签”
  • 尝试通过SelectConnection上的add_timeout方法潜入回调,然后在Consumer_callback返回后立即调用->这以某种方式弄乱了队列通信,并且发生了非常奇怪的事情,所以我假设这不是正确的方法。

任何帮助将不胜感激。也许我需要其他连接类型?

1 个答案:

答案 0 :(得分:2)

升级到皮卡0.12.0并遵循the example in this code, or do something similarlink

我使用不同的连接类型实现了示例,但是您明白了。 Pika的ioloop必须在一个线程中运行,而您耗时的任务可以在另一个线程中进行。


注意: RabbitMQ团队监视the rabbitmq-users mailing list,并且有时仅在StackOverflow上回答问题。