当使用MassTransit SendBatch方法一次性发送多条消息时,我如何知道哪些消息发送失败的详细信息



如果我在MassTransit中使用SendBatch方法,无论出于何种原因,有些消息都无法得到确认,我看不出有什么明显的方法来确定它们是哪条消息。

可能发生这种情况的一种情况是,如果我的最大队列长度是7,并且它被配置为在满消息时拒绝新消息。我尝试使用SendBatch发送10条消息,它成功地发送了7条消息,然后其余的都失败了。但它只抛出MassTransit。MessageNotAcknowledgedException异常,我看不到任何关于哪些消息发送失败的信息。我相信在其他情况下SendBatch可能会部分失败。如何从中提取故障信息?它只返回文档中所述的任务:一旦代理确认发送,就完成的任务

我现在能看到的唯一解决方法是不使用send批处理,而是使用常规的send方法,自己迭代c#中的消息,并手动处理失败的消息。

您是正确的,唯一的解决方案是枚举您正在发送的一批消息,并将返回的Task存储在数组中进行发送。然后,如果您想检查每条消息是否已发送,则可以验证Task是否已完成。

但是,如果您担心可用的队列深度,我会担心您的系统会出现其他问题。

相关内容

最新更新