如何解决MassTransit ISendEndpoint.Send 方法在 RabbitMQ 无法访问时不会抛出异常
具有以下代码片段:
try
{
UpdateCommand updateCommand = new UpdateCommand
{
Name = "Update"
};
await sendEndpoint.Send(updateCommand);
}
catch (BrokerUnreachableException ex)
{
}
catch (Exception ex)
{
}
当调用 Send 方法并且与 RabbitMQ 没有连接时,不会抛出异常。它应该像这样工作吗?
我已经尝试将 ConnectSendObserver 连接到我的 ReceiveEndpoint:
ISendObserver sendObserver = new UpdateSendObserver();
cfg.ReceiveEndpoint(EventBusConstants.UpdateQueue,c => {
c.ConfigureConsumer<UpdateCommandConsumer> (ctx);
cfg.ConnectSendObserver(sendObserver);
});
但是当与 RabbitMQ 没有连接时,它不会命中任何 PreSend、PostSend、SendFault 方法。
解决方法
作为 explained in the GitHub Discussion,您可以使用 Send
取消对 Publish
/CancellationToken
的调用。如果与代理的连接不可用,传输将使用重试策略。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。