RabbitMQ发布者确认订单

RabbitMQ发布者确认订单,rabbitmq,Rabbitmq,我正在围绕.NET RabbitMQ库编写一个包装器,并且有一个问题在我所能看到的文档中没有得到回答,我想不出一种方法来通过实验验证它 缔约国声明如下: 在大多数情况下,RabbitMQ将在 发布顺序相同(这适用于在 单个通道)。但是,会发出发布者确认 异步,可以确认单个消息或一组消息 信息。发出确认的确切时间取决于 消息的传递模式(持久与暂时)和 消息路由到的队列的属性(请参见上文)。 也就是说,不同的消息可以被视为已准备就绪 在不同的时间确认。这意味着确认 与各自的消息相比,可以以不同的顺序

我正在围绕.NET RabbitMQ库编写一个包装器,并且有一个问题在我所能看到的文档中没有得到回答,我想不出一种方法来通过实验验证它

缔约国声明如下:

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

因此,确认可以收到的秩序,我可以应付OK。但是,如何使用可以使用的
多个
标志

设想以下场景:我发送消息1、2、3、4和5。1次失败,2-5次成功。代理为1发送Nack,为5发送单个Ack,并将
Multiple
设置为true。如果订单得到保证,那么我知道我会先得到1的Nack,然后我会知道Ack是2-5的。然而,如果它们可能出现故障,那么我会假设,因为我没有1的确认,Ack是1-5的,然后当Nack出现时,就太晚了

有没有保证这种情况不会发生的地方?

来自谷歌集团。基本上,这种情况不会发生

如果1得到一个nack,则5得到一个ack,且多个=真,这意味着2-5都成功

如果1延迟,但2-5未延迟,则应获得序列为2-5的4个多=假确认,然后1的nack

如果ack帧使用范围而不是多个标志,这会更好,但我们已经做到了

干杯
卡尔

试着用英语问这个问题