假设我有队列Q,Q是消息的目的地。 我知道MSMQ保证交易中包含的多消息按照相同的顺序接收 它们已被发送。但我的应用程序会向Q发送每封邮件一条消息 <具有相同目的地的消息。。消息订单在到达Q时仍然可以保留吗?
答案 0 :(得分:0)
是的,你应该没问题,虽然这可能取决于网络有多么脆弱。 MSMQ使用内部ack消息来确保成功传递消息。重试机制将处理任何丢失的消息。取决于重试窗口大小等,可能有可能在以下消息之后延迟丢失的消息。
我还可以想象,一条消息可能先于另一条消息 - 例如,4MB消息后的1kb消息 - 由于消息从网络堆栈持久存储到磁盘所需的时间。
但这两种情况都是边缘情况。
底线是在交易之外无法保证订单,因此,如果您的应用依赖于它,请确保消息包含某种序列号。
答案 1 :(得分:0)
确保您的servicebehaviour
已使用EnsureOrderedDispatch:=true
以下是Microsoft确认的链接
答案 2 :(得分:-1)
看看this stackoverflow question。它确实引用了多个客户端,但帖子的内容可能对您有用。