MSMQ: MSMQ гарантирует последовательную передачу сообщений?
После нагрузочного тестирования я обнаружил, что некоторые пакеты не являются последовательными.
это базовая служба WCF, и клиент постоянно отправляет запрос.
1 ответ
Возможно иметь гарантированную (по порядку, точно однократную) доставку с использованием netMsmqBinding.
Первое, что вам нужно сделать, это создать вашу транзакцию MSMQ.
Во-вторых, вы должны указать WCF подключиться к транзакции следующим образом:
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void Handle(Something msg)
{
....
}
Наконец, вам нужно указать гарантированное поведение службы, используя параметр привязки Именно с точностью:
<netMsmqBinding>
<binding name="netMsmqBinding_IMyServiceInterface"
exactlyOnce="true">
...
</binding>
</netMsmqBinding>
ExactlyOnce сообщает WCF, что нам требуются транзакции, что каждое сообщение будет доставлено ровно один раз и в том порядке, в котором они были отправлены.