3

我想做一个监听Ruby器,每半小时从一个频道读取消息。我对使用哪个 Gem 感到困惑:(Bunnyhttps://github.com/ruby-amqp/bunny 还是AMQPhttp://rubyamqp.info)?我知道兔子很容易使用。但这会解决我的目的吗?

4

1 回答 1

4

你的脚本将如何被触发?有问题的数量是多少?处理是按顺序完成还是在某种基于事件的系统中完成?这两个库本质上是相同的——除了一个核心区别。

Bunny 用于顺序处理。在检索下一条消息之前,一条消息从队列中弹出,处理然后确认。要扩展这一点,您应该使用线程或进程一次处理更多消息。

AMQP gem 是基于事件的,并在 EventMachine 反应器中运行。这非常适合 RabbitMQ 或其他外部服务可能成为瓶颈的轻量工作负载。使用 AMQP gem,消费者将消费尽可能多的消息(或被告知),并为每条消息触发单独的回调。如果回调进行自己的网络调用,这可能是最好的解决方案,因为它允许 Ruby 最有效地交错网络通信。

简短的总结,但基本上对于很少运行的脚本,我建议使用 Bunny 的顺序性质,特别是如果您以前没有在 EventMachine 中工作过。如果不了解您的工作量,很难完全回答。

查看jondot/sneakers以获得现成的 Bunny 框架。

于 2014-04-06T21:44:21.133 回答