Ruby AMQP客户端如何有效地阻止等待消息?

时间:2011-07-19 18:53:21

标签: ruby rabbitmq amqp

假设您是排队服务的Ruby客户端,例如RabbitMQ的。如何实现等待消息,以便您不进行活动轮询,消耗资源?这直接来自问题Ruby blocking on a value - 如果AMQP客户端可以有效地执行它,可以使用Memcached读取做类似的事情......一般来说,对于RabbitMQ和这样的用法,我们必须满足自己等等很聪明!

1 个答案:

答案 0 :(得分:1)

在Ruby世界中,这主要通过使用asynchronous event driven I/O来完成。 如果查看AMPQ-client in GitHub,它可以支持其中两个库,EventMachine和Cool.IO。

它实际上是轮询,但是等待循环是在操作系统内核的帮助下完成的。例如,如果在Linux上运行,EventMachine将使用类似epoll的内容。

触发所需事件时,将调用您的回调函数。 如果您想要深入解释EventMachine的工作原理,可以查看here

AMPQ客户端仍在通过套接字与Queue服务器通信,但API将等待循环和通知推迟到OS内核。

相关问题