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.
当我的 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.