在C#中的MassTransit和RabbitMQ中发布多个队列

z3yyvxxp  于 2023-04-20  发布在  RabbitMQ
关注(0)|答案(1)|浏览(152)

我正在尝试编写一个系统,其中我们有一个队列来处理消息。问题是我想要有两个队列:一个用于开发环境,另一个用于生产环境。

Program.cs

builder.Services.AddMassTransit(c =>
{
    c.UsingRabbitMq((context, configurator) =>
    {
        configurator.Host(builder.Configuration["EventBusSettings:HostAddress"]);
    });
});

发布控制器

PublishAssetRequest publishAssetRequest = new(){ 
                    AssetId = asset.Id, 
                    ApplicationId = createAssetRequest.ApplicationId 
                };
                
                await _publishEndpoint.Publish(publishAssetRequest);

我知道如果我想指定我想在消费者中使用的队列是这样的:

消费者

busFactoryConfigurator.ReceiveEndpoint(**configuration["EventBusSettings:Queue"]** ?? string.Empty, c =>
                        {
                            c.ConfigureConsumer<BlockchainConsumer<PublishAssetRequest>>(context);
                            c.ConfigureConsumer<BlockchainConsumer<PublishAssetMetadataRequest>(context);
                        });

问题是我想和出版商做同样的事情。
我希望能够指定我想使用什么队列来发布(发送到队列),但我没有找到任何方法来做到这一点。
多谢了。

wtzytmuj

wtzytmuj1#

使用RabbitMQ,我建议为每个环境创建单独的虚拟主机(而不是与多个环境共享单个虚拟主机)。使用CloudAMQP很容易做到,甚至只需运行自己的RabbitMQ代理。

相关问题