Hutch & RabbitMQ:在重新排队的消息上设置超时

Hutch & RabbitMQ: set timeout on re-queued messages

当我的 Hutch 消费者失去与数据库的连接时,我想重新排队我收到的所有消息并稍后尝试处理(并保存到数据库)。

我发现我可以在我的消费者中使用这样的 requeue! 方法:

def process(message)
    handle_message(message)
  rescue ActiveRecord::ConnectionNotEstablished => error
    Rails.logger.warn("Connection to database is broken: #{error}")
    requeue!
  ensure
    ::ActiveRecord::Base.clear_active_connections!
  end
end

但是我会立即从 Rabbit 那里收到该消息,因此,当它显然无法保存到数据库时,我的消费者坚持尝试处理该消息。

在这种情况下是否可以在 Hutch 或 RabbitMQ 站点上设置超时?

正如这里的回答https://github.com/gocardless/hutch/issues/161

Not without using Scheduled delivery exchange, or abusing TTL and dead lettering.