2つのアプリケーションのそれぞれに対してAppDomainを作成することによって、同じプロセスで実行されている2つの異なるアプリケーションがあります。アプリケーション2のバス設定は次のようになりますMassTransit同じプロセスで実行されている2つの異なるアプリケーションのメモリ設定時
builder.Register(c =>
{
var inMemoryTransportCache = new InMemoryTransportCache(Environment.ProcessorCount);
var bus = Bus.Factory.CreateUsingInMemory(sbc =>
{
sbc.SetTransportProvider(inMemoryTransportCache);
});
return bus.GetSendEndpoint(new Uri(busDestination)).Result;
}).As<ISendEndpoint>();
:アプリケーション1のバス設定は次のようになり、私はアプリケーション2にアプリケーション1からメッセージを送信すると
builder.Register(c =>
{
var inMemoryTransportCache = new InMemoryTransportCache(Environment.ProcessorCount);
var bus = Bus.Factory.CreateUsingInMemory(sbc =>
{
sbc.ReceiveEndpoint("TestQueue", ce =>
{
ce.LoadFrom(c);
});
sbc.SetTransportProvider(inMemoryTransportCache);
});
return bus;
})
.As<IBusControl>()
.As<IBus>()
.SingleInstance();
builder.Register(c => c.Resolve<IBusControl>().GetSendEndpoint(
new Uri("destinationUrl")).Result)
.As<ISendEndpoint>()
.SingleInstance();
、アプリケーション2は、それを受信しません。
masstransitのドキュメントからは、受信エンドポイント以外のように見えます。メモリ内で実行しているときは何も指定する必要はありません。
セットアップに何か問題がありますか?つまり、メモリ内で実行されているときに宛先URLの問題が発生します。 application2でもコンシューマを指定する必要がありますか?
すべてのヘルプははるかに高く評価されるだろう。(masstransitバージョン3.4.1を使用して)
私たちはメモリ内で受け入れテストの実行を実装しようとしています。だから、仕様フローを使用するアクセプタンステストプロジェクトでは、アプリケーションごとに異なるアプリケーションドメイン、つまり、apiコンソールホスト、アプリケーションコンソールホストが初期化されるため、異なるアプリケーションが同じプロセスで実行され、エンドツーエンドのテスト。 – sagar