大众交通中的服装信息消费

问题描述 投票:0回答:1

我有一个要求,我有两个具有相同代码库的 ASP Net Core 应用程序(A 和 B)。每个应用程序都会发布它使用和处理的一些命令。现在,当应用程序 A 发布消息时,A 和 B 都会使用该消息,因为它们具有相同的消费者和相同的消息类型。我试图实现这样的行为:当应用程序 A 发布消息时,该消息只能由 A 使用,而不能由 B 使用。

我想知道是否可以使用

中使用的前缀

x.SetEndpointNameFormatter(new KebabCaseEndpointNameFormatter(prefix: "ApplicationA", includeNamespace: false));

因为A和B都有不同的前缀。

c# rabbitmq masstransit
1个回答
0
投票

如果我理解正确的话,您正在使用带有rabbitmq的masstransit,也许您可以通过将exchangetype配置为直接exchange类型来解决您的需求。

cfg.send<testmessage>(x => { x.useroutingkeyformatter(context => "routingkey"); });
cfg.message<testmessage>(x => x.setentityname("testmessage"));
cfg.publish<testmessage>(x => { x.exchangetype = exchangetype.direct; });
cfg.receiveendpoint(host, "testmessage_queue", e =>
{
    e.bindmessageexchanges = false;
    e.consumer<updatecustomerconsumer>();
    e.bind("testmessage", x =>
    {
        x.exchangetype = exchangetype.direct;
        x.routingkey = "routingkey";
    });
});

通过为项目A和项目B使用不同的routingkey,您可以在所需的项目中相应地消费消息。

© www.soinside.com 2019 - 2024. All rights reserved.