我有以下配置的RabbitMQ当消费者从RabbitMQ的,哪里信道获取消息预取消息驻留
prefetchCount:1 ACK模式:自动。
我有一个交换和一个队列连接到该交换和一个消费者连接到该队列。根据我的理解,下面的步骤将发生如果队列有多条消息。
- 在一个通道上队列写入数据。
- 由于ack模式是自动的,只要队列在通道上写入消息,消息就会从队列中删除。
- 消息传递给消费者,消费者开始执行该数据。
- 由于Queue已经得到了前一条消息的确认,Queue将下一个数据写入Channel。
现在,我的疑问是,假设消费者还没有完成之前的数据呢。下一个数据队列写入通道会发生什么?
另外,假设prefetchCount是10,并且我只有一次消费者连接队列,这10个消息将驻留在哪里?
很好的答案,清除了很多疑惑,将切换到pull.One更多的事情,在我们目前的项目中,我们有以下场景,假设在队列中的任何时候我们有记录如下A-> B-> C,记录C只能被处理了,A已经被处理了。这个实现是一样的吗?如果我们发现它的前任处理过的记录尚未处理,那么我们再次排队记录(而不是发送-nack,将通过交换进行排队)。这将使我们的队列记录为C-> A-> B,现在C将在A之后处理。 – Nishat
感谢您的赞扬!如果您有其他问题,我建议您将问题张贴为新问题,以便更方便地索取答案。我会评论说,所描述的情况似乎有点复杂的消息。 – theMayer