MSMQ:是否可以按照发送消息的顺序使用消息?
MSMQ: Is it possible to consume the message in the same order as they were being sent?
假设我有一个队列 Q,Q 是消息的目的地。
我知道 MSMQ 保证事务中包含的 multi 消息的接收顺序与
他们是 sent.But 我的应用程序发送 每个交易一条消息 到 Q( 消息具有相同的目的地 )。当它达到 Q?
看看this Whosebug question。它确实引用了多个客户端,但 post 的内容可能对您有用。
是的,你应该没问题,尽管这可能取决于网络的不稳定程度。 MSMQ 使用内部确认消息来确保消息成功传递。重试机制将处理任何丢失的消息。根据重试 window 大小等因素,丢失的消息可能会延迟到后续消息之后。
我还可以想象一条消息可能先于另一条消息 - 例如,一条 1kb 的消息跟在一条 4MB 的消息之后 - 由于一条消息从网络堆栈保存到磁盘。
不过,这两种情况都是边缘情况。
最重要的是,在交易之外无法保证顺序,因此,如果您的应用依赖它,请确保消息包含某种序列号。
确保您的 servicebehaviour
装饰有 EnsureOrderedDispatch:=true
这里是 link 微软用
确认的
假设我有一个队列 Q,Q 是消息的目的地。 我知道 MSMQ 保证事务中包含的 multi 消息的接收顺序与 他们是 sent.But 我的应用程序发送 每个交易一条消息 到 Q( 消息具有相同的目的地 )。当它达到 Q?
看看this Whosebug question。它确实引用了多个客户端,但 post 的内容可能对您有用。
是的,你应该没问题,尽管这可能取决于网络的不稳定程度。 MSMQ 使用内部确认消息来确保消息成功传递。重试机制将处理任何丢失的消息。根据重试 window 大小等因素,丢失的消息可能会延迟到后续消息之后。
我还可以想象一条消息可能先于另一条消息 - 例如,一条 1kb 的消息跟在一条 4MB 的消息之后 - 由于一条消息从网络堆栈保存到磁盘。
不过,这两种情况都是边缘情况。
最重要的是,在交易之外无法保证顺序,因此,如果您的应用依赖它,请确保消息包含某种序列号。
确保您的 servicebehaviour
装饰有 EnsureOrderedDispatch:=true
这里是 link 微软用
确认的