Py学习  »  MQ

rabbitmq发布者确认订单

Richard Blewett • 5 年前 • 445 次点击  

我正在围绕.NET rabbitmq库编写一个包装器,在我所能看到的范围内,我有一个文档中没有回答的问题,我想不出一种方法来进行实验验证。所以我想知道是否有人知道答案。

文件 here 声明如下:

在大多数情况下,rabbitmq将在 它们的发布顺序相同(这适用于在 单通道)。但是,发布者确认会发出 异步,可以确认单个消息或一组 信息。发出确认的确切时刻取决于 消息的传递模式(持久与暂时)和 消息路由到的队列的属性(请参见上文)。 也就是说,不同的信息可以被认为已经准备好 不同时间的确认。这意味着承认 与它们各自的消息相比,可以以不同的顺序到达。 应用程序不应依赖于确认的顺序,当 可能的。

所以确认书可能会收到不正常的,我可以处理好。然而,这和 Multiple 可以使用的标志?

想象一下下面的场景:我发送消息1、2、3、4和5。1次失败,2-5次成功。经纪人给我寄了一张1美元的Nack和一张5美元的Ack。 倍数 设置为真。如果订单有保证的话,我知道我会先得到1的Nack,然后我知道Ack是2-5的。但是,如果它们可能不正常,那么我会假设,因为我还没有确认确认ACK是1-5的,那么当NACK进来时,就太晚了。

是否有保证这种情况不会发生?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30884
 
445 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Richard Blewett
Reply   •   1 楼
Richard Blewett    5 年前

这就是 answer 来自亚历克斯在评论中提到的谷歌集团。基本上,这种情况是不可能发生的。

你好,

如果你得到一个1的nack,那么一个5的ack,multiple=true,这意味着2-5都是成功的。

如果1被延迟但2-5没有,你应该得到4个多重=错误的序列2-5确认 然后 1英镑。

如果ACK帧使用范围而不是多个标志,那就更好了,但我们现在在这里。

干杯 卡尔