首页
学习
活动
专区
圈层
工具
发布

MSMQ事务
EN

Stack Overflow用户
提问于 2017-11-09 23:29:14
回答 1查看 180关注 0票数 0

我已经在MSMQ中创建了一个事务性que。然后,我成功地向该队列提交了两条消息。第一条消息将在处理器中导致错误,并且MSMQ事务将回滚;因此,该消息将被放回队列中。第二条消息将在处理后成功,并且将提交MSMQ事务。

注意:我还没有将第一个消息移动到另一个/有毒队列的代码,这意味着它将不断被提取以进行处理,理论上消息2永远不会有机会被处理。

问题:如果我有一个监听器/处理器处理来自事务队列消息,消息2将永远不会被提取。这是意料之中的。

但是,如果我有两个监听器,消息#2确实会被接收;这会让我感到困惑。我认为MSMQ transaction queue只会让消息按照到达的顺序进行处理。

附注:如何确定不能进一步处理消息1并将其移动到另一个队列。MSMQ是否会统计一条消息被处理器接收了多少次?

EN

回答 1

Stack Overflow用户

发布于 2017-11-10 21:11:30

消息在被读取之前一直存在于队列中。当您的第一个侦听器读取有毒消息时,它将被标记为隐藏,直到事务中止,消息再次变为可见。在此期间,第二个监听器看不到有害消息,只能看到第二个消息。

您可以使用许多重试队列来模拟这一过程。在第一次失败时,始终移动到重试队列#1;在失败时,始终移动到重试队列#2;在失败时,始终移动到重试队列#2;在失败时,移动到最终队列进行调查。

“MSMQ会统计处理器接收到消息的次数吗?”-不会。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47205656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档