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, что нам требуются транзакции, что каждое сообщение будет доставлено ровно один раз и в том порядке, в котором они были отправлены.

Другие вопросы по тегам