RabbitMQ

今天看了RabbitMQ的tutorials,讲了这几个东西:

  • 支持简单的队列push <> pop
  • 支持负载均衡的push <> pop (示例中采用RR策略)
  • 支持pub/sub,broadcast,一条msg广播到多个queue(exchange=fanout)
  • 支持broadcast with filter,a message goes to the queues whose binding key exactly matches the routing key of the msg。(exchange=direct)
  • binding key支持正则(exchange=topics)总的来说,exchange=topics的功能 > exchange=direct > exchange=fanout

我们之前用的是memcacheq,memcacheq采用最简单的push <> pop 模型。rabbitmq的设计是没有在queue上做复杂的改变,而是在在producer 和 queue之间多了一层exchange,消息的分发到哪个或哪几个queue,全是exchange来控制,相当于是queue的manager。

跟memcacheq比,除了多种消息分发模式,rabbitmq还有两个优点,一是支持消息到达通知,调用consumer的callback函数,而要取memcacheq的消息,只能让consumer轮询;二是支持消息处理通知。当queue得到consumer的处理完msg通知后才真正把msg从queue中删除,这对于msg严格要求不能漏发的应用很有用,而memcacheq取出消息后就直接删除了,不会理会consumer的处理情况。

总的来说,memcacheq是个最简单的msg queue处理模型,只实现最基本的功能,把负载,广播等等功能都丢给使用者去设计。而rabbitmq做好了这些,也相对复杂一些。

0 comments:

Leave a Reply

Your email address will not be published. Required fields are marked *