なんらかの理由で、masstransit googleグループに投稿できません。参加したのに、このグループに投稿する権限がないと言われました。だからここに投稿します...
今私の問題のために:
私はMassTransitv2.7.2とAutoFacv2.6.3を使用しています。アセンブリをスキャンしてコンシューマーを登録するようにAutofacを構成しようとしています。IConsumerインターフェースを実装するすべてのタイプ。これはうまくいくようです。
バスを構成するときに、MassTransit.AutofacIntegrationアセンブリとLoadFrom(...)
拡張メソッドを使用して、コンテナーからのコンシューマーをMassTransitに登録しています。コードは次のとおりです。
var builder = new ContainerBuilder();
builder
.RegisterAssemblyTypes(typeof (CreateElectionCommandHandler).Assembly)
.Where(type => type.Implements<IConsumer>())
.AsSelf();
var container = builder.Build();
var localBus = ServiceBusFactory.New(configurator =>
{
//configurator.ReceiveFrom("loopback://localhost/testqueue");
configurator.ReceiveFrom("rabbitmq://localhost/commandqueue");
configurator.UseRabbitMq();
configurator.Subscribe(sbc => sbc.LoadFrom(container));
});
Assert.IsTrue(container.IsRegistered<CreateElectionCommandHandler>());
Assert.IsTrue(container.IsRegistered<TerminateElectionCommandHandler>());
Assert.AreEqual(1, localBus.HasSubscription<CreateElection>().Count());
Assert.AreEqual(1, localBus.HasSubscription<TerminateElection>().Count());
ループバックを使用して上記のコードを実行した場合
configurator.ReceiveFrom("loopback://localhost/testqueue");
構成(rabbitmq conifigをコメントアウト)、テストは合格します。
「ループバック」設定をコメントアウトして、
configurator.ReceiveFrom("rabbitmq://localhost/commandqueue");
configurator.UseRabbitMq();
構成、テストは失敗します。(注:rabbitmqキューはすでに稼働しています-私はPOCの一部として使用しています)。具体的には、アサーションで失敗します。
Assert.AreEqual(1, localBus.HasSubscription<CreateElection>().Count());
Assert.AreEqual(1, localBus.HasSubscription<TerminateElection>().Count());
誰かが私がここで何が起こっているのかを理解するのを手伝ってもらえますか?私はMTを初めて使用するので、何かが足りない、または何かが正しく構成されていないことを完全に予想しています。
メッセージサブスクリプションが登録されていない場合、バスは(コンシューマーが登録されていても)どのコンシューマーにも配信できないと想定するのは正しいですか?
どんな助けでも大歓迎です!