2

如果处理时间过长,有什么方法可以让 RabbitMQ 丢弃消息?

例如,如果我有一个电子邮件队列,而消费者脚本发送电子邮件的时间过长,则使其丢弃消息(将其放入死信交换中)并选择队列中的下一个项目。

在此处输入图像描述

我知道,x-message-ttl但这不适用于这里,因为一旦消息开始被处理,它就会被忽略。

4

1 回答 1

0

我认为没有办法在经纪人身上做你想做的事。要将消息移至死信交换,您需要发送rejectnack回复在您的情况下似乎不可能的消息。

例如,您有EmailSender服务和EmailGenerator服务。你可以这样组织它:

EmailGenerator用电子邮件发送消息。

EmailSender收到它。

处理完成后,EmailSender向.sent confirmationEmailGenerator

EmailGenerator跟踪到目前为止已成功发送的内容的状态。如果在 X 秒内EmailGenerator没有收到sent confirmation特定电子邮件的消息,它会重新发送相应的电子邮件消息。

于 2017-05-01T01:56:31.373 回答