Получить исключение при запуске Rhino ServiceBus
-
28-10-2019 - |
Вопрос
Моя система разделена на 2 части.Обе части общаются с каждым
другие с помощью служебной шины Rhino.
В Windows 7 проблем нет, но если я запустил где-нибудь еще
(WinXP, Server 2003, ...) У меня следующее исключение
когда я вызываю Rhino.ServiceBus.Hosting.DefaultHost.Start(..)
:
Вот фрагмент журнала Spring:
родовое словоРешение
Проблема решена: В MSMQ версии 3 или ниже (в таких системах, как Windows XP, Windows Server 2003) вложенные очереди не поддерживаются, поэтому Rhino SB использует FlatQueueStrategy для управления очередями. Проблемы возникают при настройке контейнера объекта Spring. В частности, в классе Rhino.ServiceBus.Spring.SpringBuilder есть два места, где необходимо внести изменения.
1) метод RegisterMsmqTransport :
родовое слововторая часть оператора if вызывается всегда, потому что FlatQueueStrategy не имеет конструктора с параметрами типа IQueueStrategy и Uri. Но у него даже нет конструктора без параметров. Итак, FlatQueueStrategy некорректно зарегистрирован в контейнере объекта. Модификация для этой части будет следующей:
родовое слово2) метод RegisterDefaultServices
Следующая проблема - в методе RegisterDefaultServices:
родовое словометод RegisterMsmqTransport вызывается до регистрации IEndpointRouter в контейнере объекта. IEndpointRouter используется в методе RegisterMsmqTransport (см. 1) и, следовательно, в вызове метода
родовое слововызывает исключение. Модификация здесь будет следующей:
родовое слово