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

时间:2015-07-30 10:39:38

标签: ruby-on-rails ruby rabbitmq bunny

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

1 个答案:

答案 0 :(得分:0)

在这里回答https://github.com/gocardless/hutch/issues/161

  

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