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知识点详解 #### 一、引言 在现代软件开发尤其是分布式系统设计中,消息队列作为实现服务间异步通信的重要工具之一,被广泛应用。其中,RabbitMQ是一款非常流行的消息中间件,支持多种消息...
MQTT(Message Queuing Telemetry Transport)和RabbitMQ都是消息队列系统,它们在物联网(IoT)和分布式系统中广泛使用。MQTT是轻量级的发布/订阅协议,适用于低带宽、高延迟或不可靠的网络环境,而RabbitMQ是一个...
下面我们将详细介绍离线安装RabbitMQ的全过程,包括Python环境和Erlang环境的搭建,以及处理安装过程中可能遇到的问题,如ncurses库的缺失。 首先,我们需要了解RabbitMQ依赖于Erlang环境,因为RabbitMQ是用Erlang...
因为系统本身一直在用RabbitMQ做异步处理任务的中间件,所以想到是否可以利用RabbitMQ实现延迟队列。功夫不负有心人,RabbitMQ虽然没有现成可用的延迟队列,但是可以利用其两个重要特性来实现之:1、Time To Live...
采用python编写的批量删除rabbitmq的队列或交换机。 1.修改rabbitmq_delete.py中rabbitmq的配置; 2.执行以下命令: 删除队列: python3 rabbitmq_delete.py -k ‘udata.climb’ -d 1 删除交换机: python3 rabbitmq_...
标题中提到了RabbitMQ 3.7的安装及Python使用,接下来详细阐述相关的知识点。 首先,RabbitMQ是一个开源的消息队列系统,它是基于高级消息队列协议(Advanced Message Queuing Protocol,简称AMQP)实现的。AMQP是...
Python操作RabbitMQ是将Python编程语言与RabbitMQ消息中间件相结合,以实现应用程序间的高效、...学习更多关于RabbitMQ的知识,可以查阅其官方文档和相关的Python教程,以更好地利用它来提升系统的稳定性和可扩展性。
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实现远程过程调用(RPC)。RabbitMQ是一种流行的消息中间件,它允许分布式系统中的组件通过消息传递进行通信。RPC模式在Python中通过RabbitMQ实现,可以使得客户端...
标题 "celery+ rabbitMq + python windows环境配置" 涉及到的是在Windows操作系统上集成使用Celery和RabbitMQ的流程。Celery是一个分布式任务队列,主要用于处理异步任务,而RabbitMQ则是一个开源的消息代理,常被...
理解并掌握RabbitMQ的点对点模型和相关配置,对于构建健壮、容错的分布式系统至关重要。通过这样的设计,开发者可以保证即使在服务短暂中断的情况下,也能保证消息的完整性和顺序,从而提升系统的整体可靠性。
在本“rabbitmq点对点发送消息Demo”中,我们将深入探讨如何使用RabbitMQ实现点对点通信模式,即“direct”模式。 首先,我们要理解RabbitMQ中的交换器(Exchange)、队列(Queue)和绑定(Binding)三个核心概念。...
该压缩包"rabbitmq_exporter-1.0.0-RC8.linux-amd64.tar.gz"包含了所有必要的二进制文件和配置文件,用于在你的服务器上部署和运行RabbitMQ Exporter。 RabbitMQ Exporter的主要功能在于收集RabbitMQ的各种指标,如...
标题和描述中提到的“amqpstorm”是一个专为Python设计的RabbitMQ客户端和管理库,具有线程安全的特性。这意味着它能够在多线程环境中安全地与RabbitMQ服务器进行交互,确保在并发操作时数据的一致性和完整性。 **...
Python使用RabbitMQ需要Pika库: sudo pip install pika 好了,接下来我们先看交换机的工作原理:消息发送端先将消息发送给交换机,交换机再将消息发送到绑定的消息队列,而后每个接收端都能从各自的消息队列里...
### Python 实现 RabbitMQ 六种消息模型的深入解析 #### 一、引言 RabbitMQ 是一种基于 AMQP(Advanced...以上就是使用 Python 实现的 RabbitMQ 六种消息模型的基础介绍和示例代码。希望对大家的学习和工作有所帮助。
【标题】"erlang和rabbitmq.zip" 涉及到的是两个关键技术:Erlang编程语言和RabbitMQ消息队列系统。Erlang是一种并发性极强、容错性出色的函数式编程语言,而RabbitMQ是基于Erlang开发的开源消息代理和队列服务器。 ...
总之,`python_logging_rabbitmq`库是Python开发人员与RabbitMQ结合进行日志管理的一个强大工具,它简化了分布式环境中日志数据的收集和处理流程,提升了系统的可维护性和可扩展性。通过合理配置和使用,可以极大地...