RhinoServiceBusの起動時に例外を取得する
-
28-10-2019 - |
質問
システムを2つの部分に分けています。両方の部分がそれぞれと通信します
その他はRhinoServiceBusを使用しています。
Windows 7では問題ありませんが、他の場所で起動すると
(WinXP、Server 2003、...)次の例外が発生します
Rhino.ServiceBus.Hosting.DefaultHost.Start(..)
を呼び出すとき:
ジェネラコディセタグプレ
これがSpringログのフラグメントです: ジェネラコディセタグプレ
解決
解決した問題: MSMQバージョン3以下(Windows XP、Windows Server 2003などのシステム)では、サブキューはサポートされていないため、RhinoSBはFlatQueueStrategyを使用してキューを管理します。 Springオブジェクトコンテナを設定すると問題が発生します。具体的には、クラスRhino.ServiceBus.Spring.SpringBuilderには、変更が必要な場所が2つあります。
1)メソッド RegisterMsmqTransport : ジェネラコディセタグプレ
ifステートメントの2番目の部分は常に呼び出されます。これは、FlatQueueStrategyには、タイプIQueueStrategyおよびUriのパラメーターを持つコンストラクターがないためです。 しかし、パラメーターのないコンストラクターさえありません。そのため、FlatQueueStrategyはオブジェクトコンテナに正しく登録されていません。 この部分の変更は次のようになります: ジェネラコディセタグプレ
2)メソッド RegisterDefaultServices
次の問題はRegisterDefaultServicesメソッドにあります: ジェネラコディセタグプレ
メソッドRegisterMsmqTransportは、IEndpointRouterがオブジェクトコンテナに登録される前に呼び出されます。 IEndpointRouterはメソッドRegisterMsmqTransport(1を参照)で使用されるため、メソッド呼び出し ジェネラコディセタグプレ
は例外を生成します。 ここでの変更は次のようになります: ジェネラコディセタグプレ