使用 WCF netMSMQbinding 时是否可以保证有序交付?
我们在同一个队列中放置一个插入命令,然后是多个更新命令,有时其中一个更新会超过插入。
添加大量日志后,很明显它们以正确的顺序添加到队列中,并以不同的顺序进行处理。
我已经设法谷歌了几篇文章,指出这种行为是预期的,但似乎必须可以将其配置为以某种方式订购。
我们的队列是事务性的,所以我不认为在目的地添加序列号和重新排序会起作用,因为这会失去事务性
如果我添加属性[DeliveryRequirements(RequireOrderedDelivery=true, QueuedDeliveryRequirements=QueuedDeliveryRequirementsMode.Require)]
,我会收到以下错误:
合同“IService”上的 DeliveryRequirementsAttribute 指定了 NotAllowed 的 QueuedDeliveryRequirements 值。但是,此合同的配置绑定指定它确实支持排队交付。此合同不得使用排队绑定。
我不知道为什么会出现此错误,因为一切“似乎”都设置正确。我还没有找到任何确认 MSMQ 允许此设置,因为它似乎是 WS-RM 设置,并且 AFAIK netMSMQBinding 不支持 WS-RM。