关于python和rabbitmq的那点事儿
rabbitmq是一个消息中间件,在之前的zmq介绍中有略带提过。
由于zmq的硬伤(无法方便存储、监控中间过程),故而工作中一直都是使用的"兔子"。从1.7.0到现在的2.6.1版本(个人尝试过的),rabbitmq有着许多令人欣喜、惊叹的变化(或者说是进步)。
先来简单介绍下当前版本"兔子"的闪光点:
1.内置了ha,如果组建cluster,负载均衡之类的问题就无需担忧了。
2.可以设置队列镜像。(这算是呼声比较大的需求了,简单来说"再也不用担心单点的问题了")
虽然相对于zmq的去中心化,"兔子"的server端看起来比较臃肿,不过如果在同一个工作域中,完全可以所有的机器"统统连起来",于是乎,所有的消息交互对于上层代码而言就变成localhost交互了。底层传信交给"兔子",是不是对于普通coder而言,效果和zmq差不多了?
底层的东西是不错,下面要讲到上层的东西了。
"人生苦短,我用python"。
python的amqp库种类也着实不少。原来是amqplib一统天下的,后来由于原作者大半年没有更新(前段日子更新了一次,可惜只支持amqp0.8协议),现在"兔子“官方推荐链条的第一位是pika,这位兄台也算是很勤快了,不过迟迟没有出大版本号,目前版本停留在0.9.5,(时不时不变更版本号的更新一下)。
个人目前主要用kombu(基于amqplib的一个框架),但由于当前版本的amqplib并不能很好的支持"兔子"的第二个闪光点(队列镜像),所以pika自然就进入了眼帘(啥时候出大版本1啊)。后来又发现了amqpctl,可以控制队列等rabbitmqctl不支持的东东,蛮好用的,由于他也是基于amqplib的,所以我简单修改了一下,基于pika,这样就可以声明"队列镜像了",东西在附件给出,与第三方类库一样使用即可,不过要记得先安装pika。
注意:
如果用到附件,其中的镜像队列参数声明是这个样子的:
amqpctl --host x.x.x.x --declare-queue -q test --arguments '{"x-ha-policy":"nodes","x-ha-policy-params":["yournode"]}'
官网参考在这:http://www.rabbitmq.com/ha.html#genesis
目前还有一个问题:并不支持指定的node间的镜像,按照官方的说法是”静待下个版本“~
其实本来是想写个类似"吐槽"之类的东东,为了整“安全、备份,排除单点"可是折腾死哥了。以上,作为一个方案写在这儿,便宜乃们了!
上一篇: RabbitMQ安装