我有一个使用来自MSMQ队列的消息的应用程序。该应用程序使用AppFabric使用MSMQ激活IIS中托管的WCF服务。
保留邮件的顺序至关重要。但MSMQ是否保证保留消息顺序?
在我看来,如果我的应用程序无法处理消息,例如由于与数据库的连接断开,然后将消息移动到重试队列。这允许应用程序从主队列接收新消息,直到原始消息从重试队列移回主队列。在一定次数的重试间隔后,消息将被移动到毒性队列。但是,如果应用程序处理新消息,则毒性队列处理根本不是一种选择。
因此,消息的顺序尚未保留。
我对如何处理应用程序错误的理解是错误的吗?
我是否可以设置绑定以便保留消息顺序,同样在消息处理暂时失败的情况下?
答案 0 :(得分:3)
皮特,
经验中的一些提示:
我强烈建议您调查Saga Pattern,这是此类问题的答案,它由NServiceBus和MassTransit等产品提供,这将消除难度必须直接管理你所做的MSMQ。
据我所知,在您的情况下,您可能根本无法做出选择,也无法“抛弃”您正在使用的模型,但触发消息然后成功执行此消息将更有利于您( Saga),然后你可以插入下一条消息。
我希望这有帮助,