【发布时间】:2020-12-07 07:20:23
【问题描述】:
我正在尝试通过 masstransit 向 rabbitMQ 发送命令,而我知道 send 和 publish 之间的区别,定义了直接交换,但在此之后使用 Send 传输该消息我收到“交换名称”收到扇出但当前的错误是直接的。
Send 是否对扇出类型进行交换?
config.ReceiveEndpoint("test-consumer", consumer =>
{
consumer.Lazy = true;
consumer.Consumer<TestConsumer>();
consumer.Durable = true;
consumer.ConfigureConsumeTopology = false;
consumer.Bind("MyExchange", ex =>
{
ex.ExchangeType = ExchangeType.Direct;
ex.RoutingKey = "reza";
});
//binding type from test-consumer exchange to test-consumer queue
// consumer.ExchangeType = "direct";
});
var endPoint = await bus.GetSendEndpoint(new Uri("exchange:MyExchange"));
var send3 = rezEndPoint.Send(new Test { Messaged = "sent from myExchange" },h=> { h.SetRoutingKey("reze"); } );
【问题讨论】:
-
您的 RabbitMQ 交换可能设置不正确。您需要进入您的 RabbitMQ 实例并检查您的交换是否直接设置为“类型”。我相信他们在创建新交易所时默认为扇出,很容易忘记更改它。
-
@jandrew MassTransit 会为您创建交易所,因此只要不是手动创建,图书馆就应该正确配置交易所。
-
@jandrew 如您所见,我的交换配置是在“直接”类型中创建的,但我认为“发送”会在其引擎盖下作为“扇出”发送。我的问题是关于发送命令如何将命令发送到rabbitMQ
标签: .net-core rabbitmq masstransit