【发布时间】:2019-08-08 13:56:12
【问题描述】:
我正在使用基于 RabbitMQ 的 MassTransit 在我们当前的一个项目中替换 EasyNetQ。
我基本上设置了一个效果很好的消费者 - 但是我想知道如何在使用“ConfigureConsumer”函数时指定生成队列的routingKey,例如:
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(new Uri("rabbitmq://localhost"), hostConfigurator =>
{
hostConfigurator.Username("guest");
hostConfigurator.Password("guest");
});
cfg.ReceiveEndpoint(host, "submit-order", ep =>
{
ep.ConfigureConsumer<CreatePersonConsumer>(provider);
});
}));
以上示例未设置任何 RoutingKey。 根据文档,我发现指定 routingKey 的唯一选项是使用“绑定”方法手动绑定到 Exchange,如下所示:
cfg.ReceiveEndpoint(host, "priority-orders", x =>
{
x.BindMessageExchanges = false;
x.Consumer<CreatePersonConsumer>();
x.Bind("submitorder", s =>
{
s.RoutingKey = "KEY";
s.ExchangeType = ExchangeType.Direct;
});
});
由于需要使用字符串文字来指定交换名称,这种方法有点困扰我......
我是否错过了仅指定 routingKey 而无需将交换名称直接设置为字符串的任何选项?
【问题讨论】:
标签: c# .net-core rabbitmq masstransit