我有消息处理的逻辑不是幂等的。因此,在执行它之前,我让每个传入的消息通过一个长的特殊数据库表来检查重复项。
例如,在RabbitMQ的情况下,如果消息被传递给消费者然后重新排队,则RabbitMQ将设置"重新传送"当它再次交付时标记在它上面。 https://www.rabbitmq.com/reliability.html#consumer
有没有办法知道在尝试失败或需要检查重复的每条消息后,rebus再次发送了什么消息?
如果无法做到这一点,通常可以快速可靠地对邮件进行重复数据删除,而不使用数据库?
答案 0 :(得分:1)
有没有办法知道在尝试失败或需要检查重复的每条消息后,rebus再次发送了什么消息?
使用Rebus检测重新传递的消息没有通用的方法。
Rebus'RabbitMQ传输可以能够将“redelivered”标志作为特殊标头传递给消费者,但它不会(至少目前没有)。 / p>