После тестирования нагрузки я обнаружил, что некоторые пакеты не являются последовательными.MSMQ: MSMQ гарантирует последовательное передачу сообщений?
Это базовая услуга WCF, и клиент постоянно отправляет запрос.
После тестирования нагрузки я обнаружил, что некоторые пакеты не являются последовательными.MSMQ: MSMQ гарантирует последовательное передачу сообщений?
Это базовая услуга WCF, и клиент постоянно отправляет запрос.
Можно гарантировать (в порядке, ровно один раз) доставку с использованием netMsmqBinding.
Первое, что вам нужно сделать, это создать свою реальную транзакционную очередь сообщений MSMQ.
Во-вторых, вы должны сообщить WCF, чтобы привлечь в сделке, как так:
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void Handle(Something msg)
{
....
}
Наконец, необходимо указать гарантированную поведение службы с помощью ExactlyOnce связывания параметра Я:
<netMsmqBinding>
<binding name="netMsmqBinding_IMyServiceInterface"
exactlyOnce="true">
...
</binding>
</netMsmqBinding>
ExactlyOnce сообщает WCF, что мы требуем транзакций, чтобы каждое сообщение доставлялось ровно один раз и в том порядке, в котором они были отправлены.
Спасибо за ответ, я сделал то же самое, но это не гарантировало последовательность. – User
@User - могли ли вы получать сообщения в неправильном порядке? Как вы это достигли? Также вы можете опубликовать свой сервисный интерфейс и PLS реализации? –
@ У вас также есть один сервис, работающий или масштабируемый более чем один? –
Возможно [это] (https://blogs.msdn.microsoft.com/napegadie_kones_msft_blog/2015/02/07/wcf-processes-messages-from-msmq-out-of-order-using-netmsmqbinding/) является что ты ищешь. Но я думаю, что [это] (http://stackoverflow.com/questions/13802385/how-to-enforce-message-queue-sequence-with-multiple-wcf-service-instances) будет более устойчивым решением. – khlr
Означает ли это, что это не гарантирует последовательного прохождения сообщений. – User
В зависимости от конфигурации элемент может быть помещен в очередь повторов. Заказ по умолчанию будет изменен по умолчанию. Не разрабатывайте решение в зависимости от порядка сообщений. –