Можно ли гарантировать заказанную доставку при использовании WCF netMSMQbinding?
Мы помещаем команду вставки с последующим рядом команд обновления в одну и ту же очередь, и иногда одно из обновлений превосходит вставку.
После добавления расширенной регистрации ясно, что они добавляются в очередь в правильном порядке и обрабатываются в другом порядке.
Мне удалось найти в Google несколько статей, в которых говорится, что такое поведение ожидается, но, похоже, необходимо настроить его так, чтобы его можно было как-то упорядочить.
Наши очереди транзакционные, поэтому я не думаю, что добавление порядковых номеров и повторное упорядочение в месте назначения сработает, так как это приведет к потере транзакционности
Если я добавлю атрибут [DeliveryRequirements(RequireOrderedDelivery=true, QueuedDeliveryRequirements=QueuedDeliveryRequirementsMode.Require)]
, я получу следующую ошибку:
Атрибут DeliveryRequirementsAtribute в контракте «IService» определяет
Значение QueuedDeliveryRequirements NotAllowed. Однако настроенный
Привязка для этого контракта указывает, что он поддерживает поставку в очереди.
Связывание в очереди не может использоваться с этим контрактом.
Я понятия не имею, почему мы получаем эту ошибку, поскольку все «кажется» настроено правильно. Мне так и не удалось найти подтверждения, что этот параметр разрешен для MSMQ, так как он выглядит как параметр WS-RM, а AFAIK netMSMQBinding не поддерживает WS-RM.