rabbitmq MassTransit -为多个主题配置ReceiveEndpoint

wkyowqbh  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(1)|浏览(277)

我正在进行以下实现:
有一个应用程序用于管理一些实体(如Company、Client这些数据需要被另一个应用程序使用,以便执行某些操作。(RabbitMq-AWS)通过MassTransit发送。使用这些消息的应用程序是AspNetCore 6,我正在尝试了解如何正确配置ReceiveEndpoints因为我是消息传送的新手...
这是我目前得到的...

services.AddMassTransit(busCfg =>
{
    busCfg.AddConsumers(typeof(TheAssemblyThatContainsTheMessageSignatures).Assembly);

    busCfg.UsingRabbitMq((context, cfg) =>
    {
        // OPTION 1:
        // ONE ReceiveEndpoint (queue) for all messages.
        cfg.ReceiveEndpoint("MyCompany.MyServiceName", e =>
        {
            e.ConfigureConsumer<CompanyCreatedConsumer>(context);
            e.ConfigureConsumer<CompanyUpdatedConsumer>(context);

            e.ConfigureConsumer<ClientCreatedConsumer>(context);
            e.ConfigureConsumer<ClientUpdatedConsumer>(context);

            e.ConfigureConsumer<OtherEntityCreatedOrUpdatedConsumer>(context);
        });

        // OPTION 2:
        // A ReceiveEndpoint per entity-type.
        cfg.ReceiveEndpoint("MyCompany.MyServiceName.Company", e =>
        {
            e.ConfigureConsumer<CompanyCreatedConsumer>(context);
            e.ConfigureConsumer<CompanyUpdatedConsumer>(context);
        });
        cfg.ReceiveEndpoint("MyCompany.MyServiceName.Client", e =>
        {
            e.ConfigureConsumer<ClientCreatedConsumer>(context);
            e.ConfigureConsumer<ClientUpdatedConsumer>(context);
        });
        cfg.ReceiveEndpoint("MyCompany.MyServiceName.OtherEntityCreatedOrUpdated", e =>
        {
            e.ConfigureConsumer<OtherEntityCreatedOrUpdatedConsumer>(context);
        });

        // OPTION 3????
    });
});
ep6jt1vc

ep6jt1vc1#

遵循documentation,只使用ConfigureEndpoints。你试图过度思考解决方案只会分散你的注意力。
MassTransit已经知道如何根据使用者名称配置接收端点,因此只需使用它即可。

相关问题