首页 > 解决方案 > Ruby Bunny 交换 wait_for_confirm 或死亡

问题描述

channel.waitForConfirmsOrDie()在使用 Bunny gem 进行发布确认的同时,合并类似于 RabbitMQ 方法的最佳方法是什么?

现在我正在使用:

if !@channel.using_publisher_confirmations?
    @channel.confirm_select
end

@channel.default_exchange.publish(args)

was_successful = @channel.wait_for_confirms()

但理想情况下,对于我需要的场景,我希望在等待确认时有更短的超时时间。现在,似乎有大约 15 秒的默认超时,但这对于阻塞线程来说太长了。如果我在三秒钟内没有收到确认,我希望发生的事情是引发异常/返回 false。

我在 RabbitMQ 文档中看到了一个waitForConfirmsOrDie(),但是 Bunny 没有这个方法可用。

我是否正在考虑为类似的功能重写一些方法。有没有人遇到过类似的事情并找到了实现这一点的好方法?

标签: rubyrabbitmqbunny

解决方案


不要等待同步确认。您应该使用与此类似的技术来跟踪未完成的确认并处理它们。


注意: RabbitMQ 团队会监控rabbitmq-users 邮件列表,有时只会在 StackOverflow 上回答问题。


推荐阅读