使用WCF netMSMQbinding时是否可以保证有序交付?
我们在同一队列中放置了插入命令,后面跟着许多更新命令,并且偶尔有一个更新胜过插入。
添加了广泛的日志记录后,很显然,它们是以正确的顺序添加到队列中并以不同的顺序进行处理的。
我已经在Google上发表了几篇文章,指出这种行为是可以预期的,但是似乎必须可以将其配置为以某种方式进行排序。
我们的队列是事务性的,所以我认为在目的地添加序列号和重新排序不会起作用,因为那样会失去事务性
如果添加属性[DeliveryRequirements(RequireOrderedDelivery=true, QueuedDeliveryRequirements=QueuedDeliveryRequirementsMode.Require)]
,则会出现以下错误:
我不知道为什么会出现此错误,因为一切“似乎”都已正确设置。我尚未设法确认此设置允许用于MSMQ,因为它似乎是WS-RM设置,并且AFAIK netMSMQBinding不支持WS-RM。
最佳答案
MSMQ不支持有序交付,因此您不能。
看一下System.ServiceModel.Channels.MsmqBindingElementBase + BindingDeliveryCapabilitiesHelper,它是指定MSMQ的绑定(bind)功能的类,以及如何实现该属性:
bool IBindingDeliveryCapabilities.AssuresOrderedDelivery
{
get
{
return false;
}
}