Rabbitmq 从队列消费时为什么需要循环调用?
我正在尝试使用pika和twisted从兔子队列中消费:Rabbitmq 从队列消费时为什么需要循环调用?,rabbitmq,twisted,pika,python-pika,Rabbitmq,Twisted,Pika,Python Pika,我正在尝试使用pika和twisted从兔子队列中消费: 持续(新消息->消费) 一次(新消息->消费一次,在我说之前不要再消费) 我唯一的意见就是这个。它涵盖用例1。用例2呢 basic\u consume的实现方式不是在新消息准备就绪时“通知”吗?为什么启动循环呼叫是我的“工作”?在twisted中,轮询似乎与事件循环模式相反,不是吗 当使用twisted发出http请求时,它会发送请求并在返回后继续执行(通过延迟)。为什么这在RabbitMQ/pika中不起作用 以下是我期望它如何工作:
basic\u consume
的实现方式不是在新消息准备就绪时“通知”吗?为什么启动循环呼叫是我的“工作”?在twisted中,轮询似乎与事件循环模式相反,不是吗
当使用twisted发出http请求时,它会发送请求并在返回后继续执行(通过延迟)。为什么这在RabbitMQ/pika中不起作用
以下是我期望它如何工作:
如何使用单个消息,例如
basic\u get
?我是否需要启动循环调用,并在收到消息后停止它?RabbitMQ团队监视并有时只回答有关StackOverflow的问题
你问了几个问题,所以我会尽力回答。我是Pika的维护人员之一,但对Twisted的熟悉程度不如其他连接适配器 basic_consume的实现方式不是在新消息准备就绪时“通知”吗?为什么启动循环呼叫是我的“工作”?在twisted中,轮询似乎与事件循环模式相反,不是吗 声明如下: 反复调用函数。如果f返回一个延迟,则在延迟触发之前不会进行重新调度 使用
@defer.inlineCallbacks
和yield
语句返回延迟函数。因此,LoopingCall
将不重复调用该函数,它只会在延迟触发后安排新的调用
下面是我期望它如何工作。。。从队列消费(除非队列中有消息,否则不会立即触发,每次队列中有新消息时都会触发,我现在忽略qos。)
这正是示例代码的工作方式
如何使用单个消息,例如basic\u get
?我是否需要启动循环呼叫,并在收到消息后立即停止
如果将预回迁(QoS)设置为1
,则RabbitMQ将只向使用者发送一条消息,并且在第一条消息被基本确认之前不会发送下一条消息