`
iyuan
  • 浏览: 463294 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于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
1
分享到:
评论
4 楼 iyuan 2012-02-06  
guozhiwei 写道
我们这边在近期的一个项目中也采用的 rabbitmq的集群功能 和 镜像队列

我们这边在客户端处理rabbitmq结点挂了,自动更换其他节点, 你那边是怎么处理的呢?

这个是客户端与节点的断续重连了。实际用法上无非是自动重连。最简单的做法是客户端通过域名而不是ip连接节点,那么只要做域名转向就可以了,自动的问题,有两种解决方法:1.在客户端和节点间搭建类ha的中间件(个人感觉意义不明显,那玩意儿也会down,除非直接塞在客户端)。2.就是加强节点的监控了,down则自动调节dns域名转向什么的就可以(具体看场景和策略了)
希望可以有所帮助~
3 楼 guozhiwei 2012-02-03  
我们这边在近期的一个项目中也采用的 rabbitmq的集群功能 和 镜像队列

我们这边在客户端处理rabbitmq结点挂了,自动更换其他节点, 你那边是怎么处理的呢?
2 楼 iyuan 2011-11-15  
lynnkong 写道
不知兄台有没有对比过rabbitmq和activemq呢?

没有用过。天然对java怀有恐惧心理~
1 楼 lynnkong 2011-11-14  
不知兄台有没有对比过rabbitmq和activemq呢?

相关推荐

    python rabbitmq

    较详细的 python rabbitmq 中文文档

    批量删除rabbitmq的队列或交换机

    采用python编写的批量删除rabbitmq的队列或交换机。 1.修改rabbitmq_delete.py中rabbitmq的配置; 2.执行以下命令: 删除队列: python3 rabbitmq_delete.py -k ‘udata.climb’ -d 1 删除交换机: python3 rabbitmq_...

    如何通过Python实现RabbitMQ延迟队列

    因为系统本身一直在用RabbitMQ做异步处理任务的中间件,所以想到是否可以利用RabbitMQ实现延迟队列。功夫不负有心人,RabbitMQ虽然没有现成可用的延迟队列,但是可以利用其两个重要特性来实现之:1、Time To Live...

    封装好的mqtt和rabbitmq可以直接使用

    设备通过rabbitmq推送一条消息给mqtt服务器 mqtt服务器收到消息后设备进行上线或下线操作,上线后对mqtt客户端进行缓存,缓存后定时上报数据给第三方平台

    Python操作rabbitMQ的示例代码

    主要介绍了Python操作rabbitMQ的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    rabbitmq-nagios-plugins:基于python的RabbitMq插件集

    rabbitmq-nagios-插件一组基于python的Rabbitmq插件。 安装: easy_install pynagios 将这些脚本复制到$ NAGIOS_HOME / libexec / 配置您的nagios系统。 注意,这些脚本需要HOSTNAME而不是HOSTADDRESS来区分Rabbit...

    flask-rabbitmq:与RabbitMQ pika库结合的简单Python Flask

    flask-rabbitmq是一个框架,简化了python操作Rabbitmq的框架,可以与Flask很好地结合。 因此,您无需考虑基础操作 安装 该项目已提交给Pypi,可通过pip安装: $ pip install flask-rabbitmq 产品特点 开始关注Flask...

    Python通过RabbitMQ服务器实现交换机功能的实例教程

    Python使用RabbitMQ需要Pika库: sudo pip install pika 好了,接下来我们先看交换机的工作原理:消息发送端先将消息发送给交换机,交换机再将消息发送到绑定的消息队列,而后每个接收端都能从各自的消息队列里...

    Python RabbitMQ消息队列实现rpc

    主要介绍了python 之rabbitmq实现rpc,主要实现客户端通过发送命令来调用服务端的某些服务,服务端把结果再返回给客户端,感兴趣的小伙伴们可以参考一下

    amqpstorm:线程安全的Python RabbitMQ客户端和管理库

    amqpstorm:线程安全的Python RabbitMQ客户端和管理库

    rabbitmq_priority_topic_python:rabbitmq 带有优先级和主题功能,可以发送带优先级的物品,带主题的物品接收

    rabbitmq 带有优先级和主题功能,可以发送带优先级的物品,带主题的物品接收 确保插件 rabbitmq_priority_queue 已安装并启用。 安装库:python-pika 看这里的情况:你想用queue来保存不同优先级的items,比如0-10...

    Python队列RabbitMQ 使用方法实例记录

    本文实例讲述了Python队列RabbitMQ 使用方法。分享给大家供大家参考,具体如下: 目前的exchange的路由策略是:每个需要队列的服务独享一个队列(queue),消费者(consumer)采用ACK自动应答模式处理队列消息。 ...

    用Python、RabbitMQ和Nameko实现微服务

    这个指向通常是已经将通讯协议和接口定义好的消息队列。想象一下,你有一个RESTAPI,这个API有一个端点(REST风格的API可以有多个端点用于处理对同一资源的不同类型的请求)用来接受数据,并且你需要将接收到的数据...

    amqpstorm, 线程安全 python RabbitMQ客户端&管理库.zip

    amqpstorm, 线程安全 python RabbitMQ客户端&管理库 AMQPStorm 线程安全 python RabbitMQ客户端&管理库。 简介 AMQPStorm是一个设计稳定,稳定和线程安全的库。 1

    详解Python操作RabbitMQ服务器消息队列的远程结果返回

    Python使用RabbitMQ需要Pika库 sudo pip install pika 远程结果返回 消息发送端发送消息出去后没有结果返回。如果只是单纯发送消息,当然没有问题了,但是在实际中,常常会需要接收端将收到的消息进行处理之后,...

    Python实现RabbitMQ6种消息模型的示例代码

    主要介绍了Python实现RabbitMQ6种消息模型的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    利用Python学习RabbitMQ消息队列

    RabbitMQ可以当做一个消息代理,它的核心原理非常简单:即接收和发送消息,可以把它想象成一个邮局:我们把信件放入邮箱,邮递员就会把信件投递到你的收件人处,RabbitMQ就是一个邮箱、邮局、投递员功能综合体,整个...

    rabbitmq点对点发送消息Demo

    rabbitMq 发送消息 direct

Global site tag (gtag.js) - Google Analytics