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