C# 如何在MassTransit中使用ConfigureConsumer时将端点绑定到RoutingKey

C# 如何在MassTransit中使用ConfigureConsumer时将端点绑定到RoutingKey,c#,.net-core,rabbitmq,masstransit,C#,.net Core,Rabbitmq,Masstransit,我正在RabbitMQ上与MassTransit合作,在我们当前的一个项目中替换EasyNetQ 我基本上设置了一个运行良好的使用者-但是我想知道如何在使用函数“ConfigureConsumer”时指定生成队列的routingKey,如: x.AddBus(provider=>Bus.Factory.CreateUsingRabbitMq(cfg=> { var host=cfg.host(新Uri(“rabbitmq://localhost),主机配置器=> { hostConfigurat

我正在RabbitMQ上与MassTransit合作,在我们当前的一个项目中替换EasyNetQ

我基本上设置了一个运行良好的使用者-但是我想知道如何在使用函数“ConfigureConsumer”时指定生成队列的routingKey,如:

x.AddBus(provider=>Bus.Factory.CreateUsingRabbitMq(cfg=>
{
var host=cfg.host(新Uri(“rabbitmq://localhost),主机配置器=>
{
hostConfigurator.Username(“来宾”);
主机配置器密码(“来宾”);
});
ReceiveEndpoint(主机,“提交订单”,ep=>
{
ep.配置消费者(提供商);
});
}));
以上示例未设置任何RoutingKey。 根据文档,我发现指定routingKey的唯一选项是使用“Bind”方法手动绑定到Exchange,如下所示:

cfg.ReceiveEndpoint(主机,“优先级顺序”,x=>
{
x、 bindMessageExchange=false;
x、 消费者();
x、 绑定(“提交者”,s=>
{
s、 RoutingKey=“KEY”;
s、 ExchangeType=ExchangeType.Direct;
});
});
由于需要使用字符串文字指定exchange名称,这种方法让我有点烦恼


我是否错过了只指定routingKey而不需要将exchange名称直接设置为字符串的选项?

我刚刚创建了一个示例,演示了如何在MassTransit中使用直接exchange和路由密钥

关键是两种配置,它们应该在任何接收端点配置之前

configurator.Message<ContentReceived>(c => c.SetEntityName("content.received"));

configurator.Publish<ContentReceived>(c => { c.ExchangeType = ExchangeType.Direct; });
configurator.Message(c=>c.SetEntityName(“content.received”);
Publish(c=>{c.ExchangeType=ExchangeType.Direct;});

我刚刚创建了一个示例,演示如何在MassTransit中使用直接交换和路由密钥

关键是两种配置,它们应该在任何接收端点配置之前

configurator.Message<ContentReceived>(c => c.SetEntityName("content.received"));

configurator.Publish<ContentReceived>(c => { c.ExchangeType = ExchangeType.Direct; });
configurator.Message(c=>c.SetEntityName(“content.received”);
Publish(c=>{c.ExchangeType=ExchangeType.Direct;});