我们正在迁移到分布式系统中的公交。
我们的集成合作伙伴在我们的系统上创建订单,并且他们获得Order_Id。
处理完订单后,我们会发布一条消息(OrderStatusChanged),其中包含Order_Id,Status ...等
但是,通过发布消息,我们所有的合作伙伴都会收到此消息,即使该消息仅用于其中一个。
我们唯一想到的解决方案是为每个集成应用程序创建不同的消息。但是集成应用程序的数量巨大并且还在不断增长。
是否可以过滤消息或使用不同的体系结构来克服这一挑战?
答案 0 :(得分:0)
我认为,您正在发布消息。发布-订阅模式是您观察到的行为-一条消息传递给该消息类型的所有订阅者(MassTransit使用基于类型的路由)。
您需要发送消息,因此可以明确指定将接收消息的端点。它是这样的:
public async Task SendOrder(ISendEndpointProvider sendEndpointProvider)
{
var endpoint = await sendEndpointProvider.GetSendEndpoint(_serviceAddress);
await endpoint.Send(new SubmitOrder(...));
}
以下是我们文档的链接,有关发布和发送消息的部分:https://masstransit-project.com/MassTransit/usage/producing-messages.html