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