如果我在大众运输中使用SendBatch方法,不管出于什么原因,一些消息没有被确认,我看不到一个明显的方法来找出它们是哪一个。
可能发生这种情况的一种情况是,假设我的最大队列长度为7,并且它被配置为在满时拒绝新消息。它成功地发送了7条消息,然后其余的都失败了。但是它只抛出了MassTransit.MessageNotAcknowledgedException异常,而且我看不到有关哪些消息发送失败的任何信息。我“我确信还有其他SendBatch部分失败的情况。我如何从中提取失败信息?它只返回一个如文档中所述的任务:* 代理确认发送后完成的任务 *
我现在能看到的唯一解决方法是不使用send batch,而是使用常规的send方法,自己用c#迭代消息,手动处理失败的消息。
1条答案
按热度按时间jogvjijk1#
你是正确的,唯一的解决方案是枚举你正在发送的一批消息,并将返回的
Task
存储在数组中发送它们。然后,如果你想检查每一条消息,看看它是否已经发送,你可以验证任务是否已经完成。但是,如果您担心可用的队列深度,我会担心您的系统中存在其他问题。