Вопрос

Моя система разделена на 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) и, следовательно, в вызове метода

родовое слово

вызывает исключение. Модификация здесь будет следующей:

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top