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