我想在 Ruby
中创建一个监听器,它将每半小时从一个 channel 读取消息。我对使用哪个 Gem 感到困惑:Bunny
(https://github.com/ruby-amqp/bunny)或 AMQP
(http://rubyamqp.info)?我知道 Bunny 易于使用。但这会解决我的目的吗?
最佳答案
您的脚本将如何被触发?有问题的卷是多少?处理是按顺序进行还是在某种基于事件的系统中进行?这两个库本质上是相同的——除了一个核心差异。
Bunny 用于顺序处理。在检索下一条消息之前,一条消息从队列中弹出,经过处理然后确认。要扩展它,您应该使用线程或进程来同时处理更多消息。
AMQP gem 基于事件并在 EventMachine react 器中运行。这非常适合 RabbitMQ 或其他外部服务成为瓶颈的轻型工作负载。使用 AMQP gem,消费者将消费尽可能多的消息(或被告知),并为每条消息触发单独的回调。如果回调进行自己的网络调用,这可能是最佳解决方案,因为它允许 Ruby 最有效地交错网络通信。
简短的总结,但基本上对于一个很少运行的脚本,我会建议 Bunny 的顺序性质,特别是如果您之前没有使用过 EventMachine。在不了解您的工作量的情况下很难完全回答。
看看jondot/sneakers用于现成的 Bunny 框架。
关于ruby - Ruby 中的监听器 : Bunny Gem or AMQP gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18961365/