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间的镜像,按照官方的说法是”静待下个版本“~
其实本来是想写个类似"吐槽"之类的东东,为了整“安全、备份,排除单点"可是折腾死哥了。以上,作为一个方案写在这儿,便宜乃们了!
分享到:
相关推荐
较详细的 python rabbitmq 中文文档
采用python编写的批量删除rabbitmq的队列或交换机。 1.修改rabbitmq_delete.py中rabbitmq的配置; 2.执行以下命令: 删除队列: python3 rabbitmq_delete.py -k ‘udata.climb’ -d 1 删除交换机: python3 rabbitmq_...
因为系统本身一直在用RabbitMQ做异步处理任务的中间件,所以想到是否可以利用RabbitMQ实现延迟队列。功夫不负有心人,RabbitMQ虽然没有现成可用的延迟队列,但是可以利用其两个重要特性来实现之:1、Time To Live...
设备通过rabbitmq推送一条消息给mqtt服务器 mqtt服务器收到消息后设备进行上线或下线操作,上线后对mqtt客户端进行缓存,缓存后定时上报数据给第三方平台
主要介绍了Python操作rabbitMQ的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
rabbitmq-nagios-插件一组基于python的Rabbitmq插件。 安装: easy_install pynagios 将这些脚本复制到$ NAGIOS_HOME / libexec / 配置您的nagios系统。 注意,这些脚本需要HOSTNAME而不是HOSTADDRESS来区分Rabbit...
flask-rabbitmq是一个框架,简化了python操作Rabbitmq的框架,可以与Flask很好地结合。 因此,您无需考虑基础操作 安装 该项目已提交给Pypi,可通过pip安装: $ pip install flask-rabbitmq 产品特点 开始关注Flask...
Python使用RabbitMQ需要Pika库: sudo pip install pika 好了,接下来我们先看交换机的工作原理:消息发送端先将消息发送给交换机,交换机再将消息发送到绑定的消息队列,而后每个接收端都能从各自的消息队列里...
主要介绍了python 之rabbitmq实现rpc,主要实现客户端通过发送命令来调用服务端的某些服务,服务端把结果再返回给客户端,感兴趣的小伙伴们可以参考一下
amqpstorm:线程安全的Python RabbitMQ客户端和管理库
rabbitmq 带有优先级和主题功能,可以发送带优先级的物品,带主题的物品接收 确保插件 rabbitmq_priority_queue 已安装并启用。 安装库:python-pika 看这里的情况:你想用queue来保存不同优先级的items,比如0-10...
本文实例讲述了Python队列RabbitMQ 使用方法。分享给大家供大家参考,具体如下: 目前的exchange的路由策略是:每个需要队列的服务独享一个队列(queue),消费者(consumer)采用ACK自动应答模式处理队列消息。 ...
这个指向通常是已经将通讯协议和接口定义好的消息队列。想象一下,你有一个RESTAPI,这个API有一个端点(REST风格的API可以有多个端点用于处理对同一资源的不同类型的请求)用来接受数据,并且你需要将接收到的数据...
amqpstorm, 线程安全 python RabbitMQ客户端&管理库 AMQPStorm 线程安全 python RabbitMQ客户端&管理库。 简介 AMQPStorm是一个设计稳定,稳定和线程安全的库。 1
Python使用RabbitMQ需要Pika库 sudo pip install pika 远程结果返回 消息发送端发送消息出去后没有结果返回。如果只是单纯发送消息,当然没有问题了,但是在实际中,常常会需要接收端将收到的消息进行处理之后,...
主要介绍了Python实现RabbitMQ6种消息模型的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
RabbitMQ可以当做一个消息代理,它的核心原理非常简单:即接收和发送消息,可以把它想象成一个邮局:我们把信件放入邮箱,邮递员就会把信件投递到你的收件人处,RabbitMQ就是一个邮箱、邮局、投递员功能综合体,整个...
rabbitMq 发送消息 direct