创建其他邮件,或者在Masstransit中进行某种过滤

时间:2019-02-27 03:05:13

标签: masstransit

我们正在迁移到分布式系统中的公交。

我们的集成合作伙伴在我们的系统上创建订单,并且他们获得Order_Id。

处理完订单后,我们会发布一条消息(OrderStatusChanged),其中包含Order_Id,Status ...等

但是,通过发布消息,我们所有的合作伙伴都会收到此消息,即使该消息仅用于其中一个。

我们唯一想到的解决方案是为每个集成应用程序创建不同的消息。但是集成应用程序的数量巨大并且还在不断增长。

是否可以过滤消息或使用不同的体系结构来克服这一挑战?

1 个答案:

答案 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