2015-09-15 1 views
0

У меня есть обработчик команды NserviceBus, в обработчике у нас есть процесс, который читает xml, но это занимает время. Итак, теперь случается, что время, когда читается xml, снова запускается обработчик команд, и он запускает число раз, которое я настроил как max retries, в этом случае 5.Обработчик команд NServiceBus снова и снова запущен

Это код: -

class SendHandler : 
    IHandleMessages<SendCommand> 
{ 
public SendHandler() 
    { 
     ------some code 
    } 


    public void Handle(SendCommand message) 
    { *1 
      -----there is some code which is taking time 
      -----the line number (*1) is fired again and again by the time processing takes place 
} 

Пожалуйста, помогите.

+0

Вы уверены, что другое сообщение не отправлено и не обработано? –

+0

Сколько времени занимает процесс обработки сообщения и какой транспорт вы используете? –

+0

@phil есть другое сообщение, отправленное от этого обработчика, и это обрабатывается где-то еще. – King

ответ

2

Проверьте ваш первый и настройки Второй уровень повтора (FLR/SLR Как указывается в комментариях, попробуйте на сообщение одной команды в очереди. Если обработчик не будет сделано с обработкой XML, проверьте, если он превышает значение по умолчанию transaction timeout. Если это так , рассмотрите подход, который вы используете с обработчиком, так как вам может потребоваться длительный (выполняемый) процесс.

+0

Если он использует лазурный транспорт, он может также работать с тайм-аутом peeklock, который по умолчанию составляет примерно 30 секунд. В частности, было бы полезно предложить некоторые рекомендации о том, как обрабатывать более длинные запущенные процессы, которые не могут обрабатываться в течение таймаута транзакции. Если документы не были обновлены, я знаю, что это помогло бы нам начать работу. –

+0

@ChadRuppert хорошая вещь. Время блокировки может быть увеличено до 5 минут. Помимо этого, нужно действительно взглянуть на меняющийся подход к коду. Если это длительный процесс, то можно использовать Сага. Если это не длительный процесс, но требует длительного времени обработки, отдельный поток. –

+0

Или, есть ли способ изменить конфигурацию шины для конкретной команды. как config, установленный в app.config, это « King

0

Насколько я знаю, вы не можете указывать настройки FLR/SLR на уровне сообщений. заданный на уровне конечной точки.Если конечная точка обрабатывает разные сообщения, лучше их группировать на основе SLA сообщения. Таким образом, отдельные типы сообщений с разным SLA на другую конечную точку. Можете ли вы разместить то, находится в группах Google здесь: https://groups.google.com/forum/#!forum/particularsoftware и мы можем перезвонить? Благодарю.