我正在尝试使用 MassTransit 实现概念验证服务总线。我有三个应用程序需要在彼此之间传达通用实体类型的更改。因此,当用户在一个应用程序中更新实体时,会通知其他两个应用程序。
每个应用程序都使用自己的队列配置如下:
bus = ServiceBusFactory.New(sbc =>
{
sbc.UseMsmq();
sbc.VerifyMsmqConfiguration();
sbc.ReceiveFrom("msmq://localhost/app1_queue");
sbc.UseSubscriptionService("msmq://localhost/subscription");
sbc.UseControlBus();
sbc.Subscribe(subs =>
{
subs.Handler<IMessage1>(IMessage1_Received);
});
});
还有一个订阅服务应用配置如下:
subscriptionBus = ServiceBusFactory.New(sbc =>
{
sbc.UseMsmq();
sbc.VerifyMsmqConfiguration();
sbc.ReceiveFrom("msmq://localhost/subscription");
});
var subscriptionSagas = new InMemorySagaRepository<SubscriptionSaga>();
var subscriptionClientSagas = new InMemorySagaRepository<SubscriptionClientSaga>();
subscriptionService = new SubscriptionService(subscriptionBus, subscriptionSagas, subscriptionClientSagas);
subscriptionService.Start();
问题是当其中一个应用程序发布消息时,所有三个应用程序都会收到它(包括原始发送者)。
有什么方法可以避免这种情况(无需将应用程序名称添加到消息中)?
谢谢,
G