【发布时间】:2018-04-22 16:07:33
【问题描述】:
我在 MSMQ 中创建了一个事务队列。然后我成功地将两条消息提交到该队列。第一条消息将导致处理器出错,MSMQ 事务将回滚;因此消息将被放回队列中。第二条消息在处理后会成功,MSMQ 事务将提交。
注意:我还没有将第一条消息移动到另一个/毒物队列的代码,这意味着它将继续被拾取进行处理,理论上消息 2 永远不会有机会被处理。
问题:如果我有 1 个侦听器/处理器处理来自该事务队列的消息,则消息 2 将永远不会被拾取。这是意料之中的。
但是,如果我有两个侦听器,则消息 #2 会被接收;这让我很困惑。我以为 MSMQ 事务队列只会让消息按到达的顺序处理。
附注:我如何确定无法进一步处理消息 1 并将其移动到另一个队列。 MSMQ 是否记录处理器接收消息的次数?
【问题讨论】: