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

dxxyhpgq  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(1)|浏览(213)

如果我在大众运输中使用SendBatch方法,不管出于什么原因,一些消息没有被确认,我看不到一个明显的方法来找出它们是哪一个。
可能发生这种情况的一种情况是,假设我的最大队列长度为7,并且它被配置为在满时拒绝新消息。它成功地发送了7条消息,然后其余的都失败了。但是它只抛出了MassTransit.MessageNotAcknowledgedException异常,而且我看不到有关哪些消息发送失败的任何信息。我“我确信还有其他SendBatch部分失败的情况。我如何从中提取失败信息?它只返回一个如文档中所述的任务:* 代理确认发送后完成的任务 *
我现在能看到的唯一解决方法是不使用send batch,而是使用常规的send方法,自己用c#迭代消息,手动处理失败的消息。

jogvjijk

jogvjijk1#

你是正确的,唯一的解决方案是枚举你正在发送的一批消息,并将返回的Task存储在数组中发送它们。然后,如果你想检查每一条消息,看看它是否已经发送,你可以验证任务是否已经完成。
但是,如果您担心可用的队列深度,我会担心您的系统中存在其他问题。

相关问题