【问题标题】:RabbitMQ - Discard message if it is taking too long to processRabbitMQ - 如果处理时间过长,则丢弃消息
【发布时间】:2017-09-28 05:38:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: php rabbitmq amqp rabbitmq-exchange rabbitmqctl


    【解决方案1】:

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

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

    EmailGenerator 通过电子邮件发送消息。

    EmailSender 收到。

    处理完成后,EmailSenderEmailGenerator 发送sent confirmation 消息。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-12
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      相关资源
      最近更新 更多