2016-04-29 2 views
0

Итак, я получил сообщения об обработке моего хоста. что оно делает? получение сообщения, содержащего адрес электронной почты, тело и тему. и отправьте электронное письмо с помощью smtp.nservicebus хост не удалит сообщения из очереди

поэтому в производстве, у одного из наших клиентов, я вижу 370 сообщений в очереди. никакие сообщения не выходят из очереди. только новые сообщения вступают.

Я посмотрел журнал. что есть:

2016-04-28 17:35:10,243 [DAPROD01] [3] [] INFO : Failed to process message 
System.Net.Mail.SmtpException: The operation has timed out. 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    at EmailServiceHost.Utilities.EmailSender.Send(String recipient, String subject, String body) in e:\r-release\src\EmailServiceHost\Utilities\EmailSender.cs:line 24 
    at NServiceBus.Unicast.HandlerInvocationCache.Invoke(Object handler, Object message, Dictionary`2 dictionary) in :line 0 
    at NServiceBus.Pipeline.Behaviors.InvokeHandlersBehavior.DispatchMessageToHandlersBasedOnType(IBuilder builder, LogicalMessage toHandle, LoadedMessageHandlers loadedHandlers, BehaviorContext context) in :line 0 
    at NServiceBus.Pipeline.Behaviors.InvokeHandlersBehavior.Invoke(BehaviorContext context, Action next) in :line 0 
    at NServiceBus.Sagas.SagaPersistenceBehavior.Invoke(BehaviorContext context, Action next) in :line 0 
    at NServiceBus.Pipeline.Behaviors.LoadHandlersBehavior.Invoke(BehaviorContext context, Action next) in :line 0 
    at NServiceBus.Pipeline.Behaviors.CallbackInvocationBehavior.Invoke(BehaviorContext context, Action next) in :line 0 
    at NServiceBus.Pipeline.Behaviors.ApplyIncomingMessageMutatorsBehavior.Invoke(BehaviorContext context, Action next) in :line 0 
    at NServiceBus.Pipeline.Behaviors.ExtractLogicalMessagesBehavior.Invoke(BehaviorContext context, Action next) in :line 0 
    at NServiceBus.Pipeline.Behaviors.ApplyIncomingTransportMessageMutatorsBehavior.Invoke(BehaviorContext context, Action next) in :line 0 
    at NServiceBus.UnitOfWork.UnitOfWorkBehavior.Invoke(BehaviorContext context, Action next) in :line 0 
2016-04-28 17:35:10,602 [DAPROD01] [48] [] ERROR: Message has failed FLR and will be moved to the configured error q, ID=ec40ebe5-90a5-4014-be42-a5f500877d2a. 
2016-04-28 17:36:50,689 [DAPROD01] [48] [] INFO : Failed to process message 
System.Transactions.TransactionAbortedException: The transaction has aborted. 
    at System.Transactions.TransactionStatePromotedAborted.BeginCommit(InternalTransaction tx, Boolean asyncCommit, AsyncCallback asyncCallback, Object asyncState) 
    at System.Transactions.CommittableTransaction.Commit() 
    at System.Transactions.TransactionScope.InternalDispose() 
    at System.Transactions.TransactionScope.Dispose() 
    at NServiceBus.Transports.Msmq.MsmqDequeueStrategy.Action() in :line 0 

поэтому вы заметили, что первая ошибка содержит тайм-аут клиента smtp. следующие 200 ошибок говорят только «Не удалось обработать сообщение».

сообщения не выходят из частной очереди.

+0

Пересылаются ли сообщения в очередь ошибок или они остаются во входной очереди? –

+0

Я с Томом. Если сообщения продолжают сбой, их следует перенести в очередь ошибок bij NServiceBus. Возможно, их подхватили и снова переместили в очередь, или переместили в очередь попыток или очередь ошибок. Каковы ваши настройки при повторных попытках первого уровня, повторных попытках второго уровня и очереди ошибок и аудита? –

+0

Они не попадают в очередь ошибок. Я получил все настройки по умолчанию (значение 5 FLR и без SLR). сообщения просто остаются в очереди. – user3329192

ответ

0

Обработчик сообщений обрабатывает сообщения в транзакции. Когда он получает исключение при обработке сообщения, транзакция откатывается назад, и сообщение возвращается в очередь.

Похоже, что ваш отправитель сообщений не может отправлять почту. Либо сервер smtp недоступен, либо недоступен, либо брандмауэр запрещает подключение к нему. Исключение таймаута, которое вы получаете, приводит к откату транзакции.

В конечном итоге NServiceBus должен переместить сообщение, которое продолжает сбой в очереди ошибок. Я не знаю, что здесь не происходит. Может быть, вы просто не дожидаетесь достаточно долго? Кстати, я думаю, что настройки по умолчанию - 5 FLR и 3 SLR.