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项目实战知识点解析 #### 一、RabbitMQ简介与原理 **RabbitMQ** 是一个开源的消息中间件平台,它基于 **AMQP** (Advanced Message Queuing Protocol) 协议构建,并且使用 **Erlang** 语言编写。Erlang...
我不清楚的一件事是channel.wait()和connection.drain_events()之间的区别。 如果有人可以回答我,我将非常有义务:-) 另外,pyamqp中的connection.drain_events是否真的等同于pika的connection.process_data_...
例如,通过结合消息队列(如RabbitMQ或Kafka)和日志分析平台(如ELK Stack),可以构建一个高效的数据收集、分析和预警系统。利用这些集成工具,运维人员可以及时接收到系统异常的报警,快速进行故障定位和处理。 ...
Python 码头工人 nginx 兔子mq 微服务 卡桑德拉 这个应用程序有什么作用? 提供一个丑陋的 Web UI,用户可以在其中做两件事: 提交特定语言的新句子(英语、西班牙语等) 获取迄今为止已翻译成特定语言的所有...
8. **性能优化**:当参与人数众多时,系统需要处理高并发,这可能涉及到负载均衡、队列服务(如RabbitMQ或Kafka)和缓存策略(如Redis)。 9. **移动端适配**:对于手机APP,需要使用原生开发(如Android的Java或...
- **消息队列**:RabbitMQ、Kafka等,处理异步任务和解耦系统。 4. **架构设计原则** - **单一职责**:每个组件只做一件事,避免复杂度。 - **开闭原则**:对扩展开放,对修改关闭,易于维护。 - **松耦合**:...
服务应该有一个单一的目的(做一件事并且做好),松散耦合(彼此了解很少),并且具有高内聚性(将所有相关的功能和数据封装在一起)。 API、事件和文档! 大件 应用 管道 平台 应用 服务本身所在的地方... 大件 ...
### 协同办公平台项目需求规格说明知识点解析 #### 一、引言 - **编写目的**:明确项目目标,确保所有参与者对项目的理解和期望一致。 - **背景**:随着信息技术的发展,协同办公的需求日益增长,高效、智能的办公...