MassTransit - 为多个主题配置 ReceiveEndpoint
MassTransit - Configure ReceiveEndpoint for multiple Topics
我正在研究以下实现:
有一个用于管理公司、客户等几个实体的应用程序。
这些数据需要被另一个应用程序使用才能做一些事情。
基本思想是通过 MassTransit 使用消息代理 (RabbitMq-AWS) 实现 Pub/Sub 模型。
将使用这些消息的应用程序是 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????
});
});
遵循 documentation,只使用 ConfigureEndpoints
。你试图过度思考解决方案只会分散你的注意力。
MassTransit 已经知道如何根据消费者名称配置接收端点,所以随它去吧。
我正在研究以下实现:
有一个用于管理公司、客户等几个实体的应用程序。 这些数据需要被另一个应用程序使用才能做一些事情。 基本思想是通过 MassTransit 使用消息代理 (RabbitMq-AWS) 实现 Pub/Sub 模型。 将使用这些消息的应用程序是 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????
});
});
遵循 documentation,只使用 ConfigureEndpoints
。你试图过度思考解决方案只会分散你的注意力。
MassTransit 已经知道如何根据消费者名称配置接收端点,所以随它去吧。