关于消息队列

2016 年 09 月 06 日

还是为了WebRTC的事情,研究了几天消息队列(Message Queue)。

消息队列,在这里是个专有名词,指的是一个独立的用于消息收发的服务。现成的消息队列服务器有ActiveMQ/RabbitMQ/ZeroMQ等等。其中RabbitMQ使用erlang语言实现,天生就能较好的支持并发。ActiveMQ用的是Java,开发起来较方便。ZeroMQ特点是轻量/速度快,但功能不完整,使用场景跟上面两个不一样。

每种服务器都支持一种或几种消息协议,如AMQP/STOMP/MQTT等。似乎AMQP较通用;STOMP只适用于文本消息;MQTT只适用于二进制消息,更适合物联网环境。

RabbitMQ默认装好后,如果是在localhost,那么可以直接用测试的例子。否则就必须增加一个用户(使用rabbitmqctl命令或打开控制台后用guest/guest登陆添加),再修改例子,使用新增的用户登录。

AMQP协议的参考文章在这里

最后,个人感觉,消息队列这种形式,比较适合大范围的Push(例如Server推到大量Client),不太适合单对单的直接路由(例如Client发给另一个Client)。因此我还是回头看看XMPP去吧。

Top