一.发布hello world

首先我们看一个最简单的消息队列系统

 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@author: zengchunyun
"""
import pika connection = pika.BlockingConnection(pika.ConnectionParameters("localhost"))
channel = connection.channel() channel.queue_declare(queue="hello") # 在发送之前,我们要确保这个队列存在,如果我们发送一个消息到不存在的队列,rabbitmq会认为这个是垃圾消息
# 我们已经创建了一个队列名为hello,待会我们的消息都会发送到这个队列 # rabbitmq不允许我们直接将消息发送到队列,而是通过一个交换器,现在我们使用一个特殊对交换器,它是一个空对字符串标识对交换器,它能确保我们对消息该放到哪个
# 队列,这个队列需要特殊对rouning_key
channel.basic_publish(exchange="",
routing_key="hello",
body="hello world",) print(" [x] Sent 'hello world") # 在退出之前,我们需要确保网络缓冲区已经清空,且我们对消息的确已经发送到rabbitMQ,我们可以关闭这个连接
connection.close()

发布者

 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@author: zengchunyun
"""
import pika
import time connection = pika.BlockingConnection(pika.ConnectionParameters(host="localhost"))
channel = connection.channel() channel.queue_declare(queue="hello") # 为了确保每次订阅的队列都存在,我们先声明一个队列 # 接收队列消息需要通过回调函数来接收 def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
time.sleep(3)
ch.basic_ack(delivery_tag = method.delivery_tag) channel.basic_consume(callback,
queue="hello",
no_ack=True) # 这里我们需要告诉rabbitMQ这个回调函数会从我们的hello队列接收消息,关闭消息确认标记,
# 那么当worker工作中异常,如没有完成任务就关闭了连接,可能会丢失任务,使用no_ack=True默认只要rabbit分配任务给该worker了,就会将任务从队列删除 print(" [*] Waiting for messages. To exit press CTRL+C")
channel.start_consuming() # 我们这里进入了一个永不终止的循环等待数据状态

订阅者

上面这个系统只是单一的消息队列,

python之 rabbitmq的更多相关文章

  1. Python操作RabbitMQ

    RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消 ...

  2. 用 Python、 RabbitMQ 和 Nameko 实现微服务

    用 Python. RabbitMQ 和 Nameko 实现微服务 原创 07-17 17:57 首页 Linux中国 "微服务是一股新浪潮" - 现如今,将项目拆分成多个独立的. ...

  3. python之RabbitMQ

    一.安装RabbitMQ 1. 安装erlang 1 2 3 4 tar xf otp_src_18.3.tar.gz cd otp_src_18.3 ./configure --prefix=/ma ...

  4. Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...

  5. python - 操作RabbitMQ

    python - 操作RabbitMQ     介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.MQ全称为Mess ...

  6. 文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ

    本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个red ...

  7. Python之路第十二天,高级(4)-Python操作rabbitMQ

    rabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...

  8. Python与RabbitMQ交互

    RabbitMQ 消息队列 成熟的中间件RabbitMQ.ZeroMQ.ActiveMQ等等 RabbitMQ使用erlang语言开发,使用RabbitMQ前要安装erlang语言 RabbitMQ允 ...

  9. python中RabbitMQ的使用(安装和简单教程)

    1,简介 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从"生产者"接收消息 ...

  10. Python之RabbitMQ的使用

    今天总结一下Python关于Rabbitmq的使用 RabbitMQ官网说明,其实也是一种队列,那和前面说的线程queue和进程queue有什么区别呢? 线程queue只能在同一个进程下进行数据交互 ...

随机推荐

  1. <td valign="center" align="left">

    单元格对齐方式:垂直居中,水平居左.

  2. Spring实战 (第3版)——AOP

    在软件开发中,分布于应用中多处的功能被称为横切关注点.通常,这些横切关注点从概念上是与应用的 业务逻辑相分离的(但是往往直接嵌入到应用的业务逻辑之中).将这些横切关注点与业务逻辑相分离正是 面向切面编 ...

  3. [译]在Node中使用indicative来验证model

    原文: http://amanvirk.me/validating-models-in-node-js-using-indicative/\ 在nodejs中有关于验证model的包有许多, 我最喜欢 ...

  4. log4j的使用详细解析

    1 Log4j配置说明 1.1 配置文件Log4j可以通过java程序动态设置,该方式明显缺点是:如果需要修改日志输出级别等信息,则必须修改java文件,然后重新编译,很是麻烦: log4j也可以通过 ...

  5. vijos1250 最勇敢的机器人

    背景 Wind设计了很多机器人.但是它们都认为自己是最强的,于是,一场比赛开始了~ 描述 机器人们都想知道谁是最勇敢的,于是它们比赛搬运一些物品. 它们到了一个仓库,里面有n个物品,每个物品都有一个价 ...

  6. Raid与DAN、SAN、NAS基础

    一. 磁盘基本知识 1. Raid分类 Raid磁盘阵列是由多个磁盘组合成的磁盘组,可将数据分割成许多区段,分别存放在各个磁盘上:同时利用不同排列技术,可提高磁盘性能和数据安全性.下列简单介绍几种Ra ...

  7. shell--3.运算符

    1.注意 原生bash不支持简单的数学运算,但是可以用其它命令来实现如 awk 和expr ,expr最常用 val=`expr 2 + 3` echo "结果 ${val}" # ...

  8. php之JavaScript

    JS对于大小写敏感 作用:增加跟html页面的交互性. 应用:验证表单.创建cookies(可插入html页面的编程代码)js插入页面后可由所有现代的浏览器执行.应用于<body>< ...

  9. Android 一些基本组件的使用

    Dialog 基本用法 ,带自定义view AlertDialog dialog = new AlertDialog.Builder(context).setTitle("写入信息" ...

  10. celery 异步任务小记

    这里有一篇写的不错的:http://www.jianshu.com/p/1840035cb510 自己的"格式化"后的内容备忘下: 我们总在说c10k的问题, 也做了不少优化, 然 ...