当我的 Hutch 消费者失去与数据库的连接时,我想将我收到的所有消息重新排队并尝试稍后处理(并保存到数据库)它们。
我发现我可以使用重新排队!在我的消费者中这样的方法:
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 收到该消息,因此,当它显然无法保存到 DB 时,我的消费者坚持尝试处理该消息。
在这种情况下,是否可以在 Hutch 或 RabbitMQ 站点上设置超时?