首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

关于python跟rabbitmq的那点事儿

2012-12-21 
关于python和rabbitmq的那点事儿rabbitmq是一个消息中间件,在之前的zmq介绍中有略带提过。由于zmq的硬伤(无

关于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间的镜像,按照官方的说法是”静待下个版本“~

?

其实本来是想写个类似"吐槽"之类的东东,为了整“安全、备份,排除单点"可是折腾死哥了。以上,作为一个方案写在这儿,便宜乃们了!

?

1 楼 lynnkong 2011-11-14   不知兄台有没有对比过rabbitmq和activemq呢? 2 楼 iyuan 2011-11-15   lynnkong 写道不知兄台有没有对比过rabbitmq和activemq呢?
没有用过。天然对java怀有恐惧心理~
3 楼 guozhiwei 2012-02-03   我们这边在近期的一个项目中也采用的 rabbitmq的集群功能 和 镜像队列

我们这边在客户端处理rabbitmq结点挂了,自动更换其他节点, 你那边是怎么处理的呢? 4 楼 iyuan 2012-02-06   guozhiwei 写道我们这边在近期的一个项目中也采用的 rabbitmq的集群功能 和 镜像队列

我们这边在客户端处理rabbitmq结点挂了,自动更换其他节点, 你那边是怎么处理的呢?
这个是客户端与节点的断续重连了。实际用法上无非是自动重连。最简单的做法是客户端通过域名而不是ip连接节点,那么只要做域名转向就可以了,自动的问题,有两种解决方法:1.在客户端和节点间搭建类ha的中间件(个人感觉意义不明显,那玩意儿也会down,除非直接塞在客户端)。2.就是加强节点的监控了,down则自动调节dns域名转向什么的就可以(具体看场景和策略了)
希望可以有所帮助~

热点排行