有什么方法可以从SendEndpoint发送消息以与参数alternate-exchange进行交换吗?

问题描述 投票:0回答:2

我正在尝试使用

ISendEnpoint.Send
方法将消息发送到具有参数
alternate-exchange
的 RabbitMq 交换,但我没有找到任何方法来设置此参数的值。
如果我不指定此参数,我会捕获此异常:

“RabbitMQ.Client.Exceptions.OperationInterruptedException:AMQP 操作被中断:AMQP close-reason,由Peer发起, code=406,text="PRECONDITION_FAILED - 不等价的参数 虚拟主机“/”中交换“target_queue”的“alternate-exchange”: 没有收到任何信息,但当前的值是“norouted””。

如何指定这个参数?

c# rabbitmq masstransit
2个回答
0
投票

我知道这是一篇旧文章,但我已经通过在端点 Uri 中指定 alterexchange={alternate-exchange-name} 确认这适用于当前版本 (8.2.3)。

    var endpoint = await bus.GetSendEndpoint(new Uri($"exchange:primary-exchange-name?alternateexchange=alternate-exchange-name"));
    await endpoint.Send(value, cancellationToken);

-1
投票

您可以修改消息的发布拓扑,以便目标交换器指定备用交换器和队列,以便将没有有效目标的已发布消息传递到备用交换器。

https://github.com/MassTransit/MassTransit/blob/develop/tests/MassTransit.RabbitMqTransport.Tests/AlternateExchange_Specs.cs

© www.soinside.com 2019 - 2024. All rights reserved.