有没有办法让RabbitMQ在处理时间过长时丢弃该消息?
例如,如果我有一个电子邮件队列并且消费者脚本花费太长时间来发送电子邮件,请让它丢弃该消息(将其放入死信交换中)并选择队列中的下一个项目。
我知道x-message-ttl
,但这不适用于此,因为一旦消息开始处理,它就会被忽略。
答案 0 :(得分:0)
我认为没有办法在经纪人身上做你想做的事。要将邮件移至死信交换,您需要发送reject
或nack
条回复邮件,这在您的情况下似乎不可能。
例如,您有EmailSender
服务和EmailGenerator
服务。
你可以用这种方式组织它:
EmailGenerator
通过电子邮件发送消息。
EmailSender
收到它。
完成处理后,EmailSender
会向sent confirmation
发送EmailGenerator
条消息。
EmailGenerator
跟踪到目前为止已成功发送的内容的状态。
如果EmailGenerator
在X秒内未收到特定电子邮件的sent confirmation
消息,则会重新发送相应的电子邮件。