0

当我的 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 站点上设置超时?

4

1 回答 1

0

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

不是没有使用Scheduled delivery exchange,或者滥用 TTL 和死信。

于 2015-07-30T13:43:46.270 回答