`
iyuan
  • 浏览: 469430 次
  • 性别: 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是一款非常流行的消息中间件,支持多种消息...

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

    MQTT(Message Queuing Telemetry Transport)和RabbitMQ都是消息队列系统,它们在物联网(IoT)和分布式系统中广泛使用。MQTT是轻量级的发布/订阅协议,适用于低带宽、高延迟或不可靠的网络环境,而RabbitMQ是一个...

    离线安装rabbitmq全过程,包含python环境和er环境以及安装包的安装过程

    下面我们将详细介绍离线安装RabbitMQ的全过程,包括Python环境和Erlang环境的搭建,以及处理安装过程中可能遇到的问题,如ncurses库的缺失。 首先,我们需要了解RabbitMQ依赖于Erlang环境,因为RabbitMQ是用Erlang...

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

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

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

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

    RabbitMQ 3.7安装及Python使用

    标题中提到了RabbitMQ 3.7的安装及Python使用,接下来详细阐述相关的知识点。 首先,RabbitMQ是一个开源的消息队列系统,它是基于高级消息队列协议(Advanced Message Queuing Protocol,简称AMQP)实现的。AMQP是...

    Python操作rabbitMQ的示例代码

    Python操作RabbitMQ是将Python编程语言与RabbitMQ消息中间件相结合,以实现应用程序间的高效、...学习更多关于RabbitMQ的知识,可以查阅其官方文档和相关的Python教程,以更好地利用它来提升系统的稳定性和可扩展性。

    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消息队列实现rpc

    在本文中,我们将深入探讨如何使用Python和RabbitMQ实现远程过程调用(RPC)。RabbitMQ是一种流行的消息中间件,它允许分布式系统中的组件通过消息传递进行通信。RPC模式在Python中通过RabbitMQ实现,可以使得客户端...

    celery+ rabbitMq + python window是下配置

    标题 "celery+ rabbitMq + python windows环境配置" 涉及到的是在Windows操作系统上集成使用Celery和RabbitMQ的流程。Celery是一个分布式任务队列,主要用于处理异步任务,而RabbitMQ则是一个开源的消息代理,常被...

    rabbitMQ点对点发送消息

    理解并掌握RabbitMQ的点对点模型和相关配置,对于构建健壮、容错的分布式系统至关重要。通过这样的设计,开发者可以保证即使在服务短暂中断的情况下,也能保证消息的完整性和顺序,从而提升系统的整体可靠性。

    rabbitmq点对点发送消息Demo

    在本“rabbitmq点对点发送消息Demo”中,我们将深入探讨如何使用RabbitMQ实现点对点通信模式,即“direct”模式。 首先,我们要理解RabbitMQ中的交换器(Exchange)、队列(Queue)和绑定(Binding)三个核心概念。...

    rabbitmq_exporter-1.0.0-RC8.linux-amd64.tar.gz

    该压缩包"rabbitmq_exporter-1.0.0-RC8.linux-amd64.tar.gz"包含了所有必要的二进制文件和配置文件,用于在你的服务器上部署和运行RabbitMQ Exporter。 RabbitMQ Exporter的主要功能在于收集RabbitMQ的各种指标,如...

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

    标题和描述中提到的“amqpstorm”是一个专为Python设计的RabbitMQ客户端和管理库,具有线程安全的特性。这意味着它能够在多线程环境中安全地与RabbitMQ服务器进行交互,确保在并发操作时数据的一致性和完整性。 **...

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

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

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

    ### Python 实现 RabbitMQ 六种消息模型的深入解析 #### 一、引言 RabbitMQ 是一种基于 AMQP(Advanced...以上就是使用 Python 实现的 RabbitMQ 六种消息模型的基础介绍和示例代码。希望对大家的学习和工作有所帮助。

    erlang和rabbitmq.zip

    【标题】"erlang和rabbitmq.zip" 涉及到的是两个关键技术:Erlang编程语言和RabbitMQ消息队列系统。Erlang是一种并发性极强、容错性出色的函数式编程语言,而RabbitMQ是基于Erlang开发的开源消息代理和队列服务器。 ...

    Python库 | python_logging_rabbitmq-1.1.1-py2.py3-none-any.whl

    总之,`python_logging_rabbitmq`库是Python开发人员与RabbitMQ结合进行日志管理的一个强大工具,它简化了分布式环境中日志数据的收集和处理流程,提升了系统的可维护性和可扩展性。通过合理配置和使用,可以极大地...

Global site tag (gtag.js) - Google Analytics