RabbitMq邮件重新传递

时间:2017-04-27 01:28:29

标签: c# rabbitmq

说我有一个与兔子的连接,我已经提取了1000条消息,但尚未确认它们,因为它们正在被阻塞集合中的一个线程处理。

现在假设我的连接死了并自动恢复。此时,服务器上的所有这些消息都将重新排队等待传送。但我仍然在本地拥有它们的副本,使用旧的Delivery标签。

这让我相信我应该通过清除本地队列来处理连接或通道关闭事件。

你能证实这是真的吗?

2 个答案:

答案 0 :(得分:0)

是的,就是这样。这些消息将被重新传递。

因此,除了清除本地排队的邮件之外,您可能还需要考虑预取,这样就不会在本地排队这么多邮件。

你的策略是拉1000,处理所有,然后最终把它们全部搞定?我可以看到,由于性能原因,您可能会这样做,因此您可以发送一个具有multiple = true的单个ack,但它确实会引入额外的重新传递和重复的处理风险。

答案 1 :(得分:0)

你是对的。如果你一次处理一条消息,你可以将预取计数设置为1,你也可以不需要在本地清除任何消息。