У меня есть конфигурация NServiceBus, которая отлично работает на машинах разработчиков и в моей среде разработки.
Однако, когда я перемещаю его в свою тестовую среду, мои сообщения просто начинают отбрасываться.
Вот система:
- Приложение получает TCP-сообщение от системы мэйнфреймов и отправляет его в MSMQ (назовем его
FromMainframe
). - Приложение, размещенное в IIS, имеет метод «Handle» для этого MSMQ и обрабатывает сообщения от мейнфрейма.
В моей тестовой среде второй шаг выполняется только наполовину. Сообщение выскакивает из MSMQ, но не обрабатывается моим приложением.
Фактически мои данные ПОТЕРЯНЫ! NServiceBus удаляет их из очереди, но я никогда не могу их обработать. Их нет даже в очереди ошибок!
Вот что я пробовал, пытаясь понять, что происходит:
- Проверьте файлы конфигурации
- Attach a remote debugger to the process to see what the
Handle
method is doing- The
Handle
method is never called (but when I attach to the Development Environment my breakpoint in myHandle
method is hit and it all works flawlessly).
- The
- Повторно разверните мою версию Dev в тестовой среде и повторите шаг 2 (на всякий случай, если версии не совпадают).
- Проверьте файлы конфигурации еще раз
- Check that the Error queue is not filling up
- The error queue stays empty (I wish it would fill up, then my data would not be LOST).
- Check for any other process that may be pulling stuff from my MSMQs
- I Turned off my IIS website and the messages in the
FromMainframe
queue start to backup. - Когда я снова включаю его, сообщения исчезают довольно быстро (но все же не все сразу). Скорость, с которой они исчезают, слишком высока, чтобы их можно было обработать с помощью моего метода
Handle
.
- I Turned off my IIS website and the messages in the
- Проверьте файлы конфигурации еще раз.
- Run the NServiceBusTools\MsmqUtils\Runner.exe \i
- I ran it, rebooted, ran it again and again for good measure!
- Снова проверьте конфиги (должно быть, я ЧТО-ТО пропустил, верно?)
- Check the Development Environment Configs are not pointing to the Test Environment
- I don't think it is possible to use another computer's MSMQ as your input queue, but it does not hurt to check.
- Ищите любые блоки catch, которые могут молча убить мое сообщение.
- Последняя проверка файлов конфигурации.
- Воссоздайте мою тестовую среду на другой машине (она работала безупречно)
- Run my stuff outside of IIS.
- When I host outside of IIS (using NServiceBus.Host.exe) it all works fine. So it has to be an IIS thing right?
- Сходите с ума и надейтесь, что переполнение стека может дать хоть какую-то информацию.