使用MassTransit订阅ActiveMQ主题

时间:2019-07-24 11:43:32

标签: asp.net-core activemq masstransit

是否可以使用MassTransit的ActiveMqTransport从ActiveMQ订阅主题?

我将MassTransit用作Asp.Net Core Mvc项目中的HostedService,下面的代码创建了对Queue的订阅,但是找不到任何参数或配置允许我订阅Topic。 / p>

services.AddMassTransit(massTransitconfiguration =>
{
    massTransitconfiguration.AddConsumer<MyCreatedConsumer>();

    massTransitconfiguration.AddBus(provider => Bus.Factory.CreateUsingActiveMq(cfg =>
    {
        var host = cfg.Host(new Uri(this.configuration["activeMqHost"]), h =>
        {
            h.Username(this.configuration["activeMqUsername"]);
            h.Password(this.configuration["activeMqPassword"]);
        });

        cfg.ReceiveEndpoint(host, this.configuration["activeMqTopicName"], endpointConfiguration =>
        {
            EndpointConvention.Map<MyEvent>(endpointConfiguration.InputAddress);

            endpointConfiguration.ConfigureConsumer<MyCreatedConsumer>(provider);
        });
    }));

    services.AddSingleton<IHostedService, BusService>();
});

1 个答案:

答案 0 :(得分:0)

在配置接收端点时,您指定的名称用于将消息传递/接收到的队列。在该接收终结点上配置的使用者将自动绑定到其名称与消息类型格式的名称匹配的主题,以便在该队列中接收发布的消息(通过MassTransit)。

要绑定特定主题,例如另一个系统在其上生成消息的主题,或出于任何原因而专门命名的主题,则可以使用接收端点配置器的.Bind()方法。如:

e.Bind("some-topic");

这将在接收端点上添加一个附加绑定。处理有关该主题的消息类型的使用者仍将需要存在,或者将消息移到跳过的队列中。