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