gpt4 book ai didi

wcf - 使用 netMSMQ 绑定(bind)的有序交付

转载 作者:行者123 更新时间:2023-12-04 18:54:44 25 4
gpt4 key购买 nike

使用 WCF netMSMQbinding 时是否可以保证有序交付?

我们在同一个队列中放置一个插入命令,然后是多个更新命令,有时其中一个更新会超过插入。

添加大量日志后,很明显它们以正确的顺序添加到队列中,并以不同的顺序进行处理。

我已经设法谷歌了几篇文章,指出这种行为是预期的,但似乎必须可以将其配置为以某种方式订购。

我们的队列是事务性的,所以我不认为在目的地添加序列号和重新排序会起作用,因为这会失去事务性

如果我添加属性 [DeliveryRequirements(RequireOrderedDelivery=true, QueuedDeliveryRequirements=QueuedDeliveryRequirementsMode.Require)]我收到以下错误:

The DeliveryRequirementsAttribute on contract 'IService' specifies a QueuedDeliveryRequirements value of NotAllowed. However, the configured binding for this contract specifies that it does support queued delivery. A queued binding may not be used with this contract.



我不知道为什么会出现此错误,因为一切“似乎”都设置正确。我还没有找到任何确认 MSMQ 允许此设置,因为它似乎是 WS-RM 设置,并且 AFAIK netMSMQBinding 不支持 WS-RM。

最佳答案

MSMQ 不支持有序交付,因此您不能。

看一下 System.ServiceModel.Channels.MsmqBindingElementBase+BindingDeliveryCapabilitiesHelper ,它是指定 MSMQ 绑定(bind)功能的类,以及它如何实现该属性:

bool IBindingDeliveryCapabilities.AssuresOrderedDelivery
{
get
{
return false;
}
}

关于wcf - 使用 netMSMQ 绑定(bind)的有序交付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/729612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com