我有一个应用程序使用MSMQ队列中的消息。应用程序使用AppFabric在IIS中使用MSMQ激活托管在IIS中的WCF服务。在WCF应用程序中使用MSMQ消息时保留消息顺序
消息顺序保存至关重要。但MSMQ保证消息顺序是否被保留?
在我看来,如果我的应用程序无法处理消息,例如由于连接到数据库的连接断开,消息将被移至重试队列。这允许应用程序从主队列接收新消息,直到原始消息从重试队列移回主队列。经过一定数量的重试间隔后,该消息将移至毒性队列。但是如果应用程序处理新消息,那么毒化队列处理根本就不是一种选择。
因此消息的顺序尚未保存。
我的理解错误是如何处理的?
我可以设置绑定,以便在消息处理暂时失败的情况下保留消息顺序吗?
[与netMSMQbinding有序传递]的可能重复(http://stackoverflow.com/questions/729612/ordered-delivery-with-netmsmqbinding) –
真的不知道为什么你希望为了达成这个。使用消息队列的想法是,如果失败,它不会停止任何其他命令/消息处理。如果我正确地理解了你,你只想做与此相反的事情(当发生故障时停止消息处理直到它被排序),是吗?否则,任何后续故障将按照正确的顺序堆叠在故障队列中,以便在问题排序后尽快重试。 – nieve