Проблемы с отправкой сообщений Nservicebus при отладке — исчезающие сообщения

#nservicebus

#nservicebus

Вопрос:

Мое веб-приложение нормально отправляет сообщения в очередь, без ошибок, без исключений, без жалоб. В журнале Log4Net говорится

 Sending message Test.Nservicebus.Messages.v1.LoggMessage, Test.NServiceBus,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null with ID
456f0b8d-341d-4f92-b3ac-12872c710a6a4121 to destination V1_LoggQueue..............
  

Выглядит нормально!

Но когда я смотрю в консоль управления, я не вижу сообщений в очереди! (На месте нет обработчика очереди).

Я отправляю сообщение в локальную частную очередь.

Должна ли быть определена «исходящая очередь»? или это только при отправке в удаленную очередь? Мой список исходящих очередей пуст.

Итак, как я могу это отладить? Есть идеи, с чего начать?

Моя инициализация NServiceBus похожа

  Bus = NServiceBus.Configure
.WithWeb()                   
.Log4Net()                   
.DefaultBuilder()            
.XmlSerializer()             
.MsmqTransport()             
  .IsTransactional(false)  
  .PurgeOnStartup(false)   
.UnicastBus()                
  .ImpersonateSender(false)
.CreateBus()                 
.Start();                    
  

Затем я просто использую Bus.Send(MyMessage); для отправки сообщения.

идеи?

Комментарии:

1. Настроена ли удаленная очередь как транзакционная?

Ответ №1:

Если конечная веб-точка и конечная точка сервера находятся на разных компьютерах, вы должны увидеть исходящую очередь на веб-машине. Вы можете увидеть сообщения там. Это означает, что по какой-то причине MSMQ не удалось завершить отправку на другой компьютер. Обычно это означает, что на любом компьютере существует проблема с конфигурацией, связанная с MSMQ, MSDTC, или ее может блокировать брандмауэр.

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