MassTransit 中是否支持 RabbitMQ 强制标志

Is there support for the RabbitMQ mandatory flag in MassTransit

如果消息未传送到任何队列,我希望在使用 MassTransit 发送到 RabbitMQ 交换器时出现异常。看起来 RabbitMQ 强制标志可以用于这样的事情,但我还没有找到任何方法来使用 MassTransit 来设置它。支持吗?

我的代码:

var personSendEndpoint = busControl.GetSendEndpoint(new Uri($"rabbitmq://localhost/{personQueueName}")).Result;

// An exception should occur on the following call if the message is not delivered to any queue
personSendEndpoint.Send(new PersonUpdated() { Name = "Dorian Gray", Key = Guid.NewGuid() });

您可以设置 Mandatory 标志,但没有可爱的扩展方法可以为您完成。基本上,您可以按如下所示进行操作:

await endpoint.Send(new PersonUpdate(...), context =>
{
    (context as RabbitMqSendContext).Mandatory = true;
});

如果不存在交换绑定,这将设置标志告诉 RabbitMQ 抛出异常。