python中RabbitMQ的使用(交换机,广播形式)

简介

如果要让每个接收端都能收到消息,此时需要将消息广播出去,需要使用交换机。

工作原理

消息发送端先将消息发送给交换机,交换机再将消息发送到绑定的消息队列,而后每个接收端都能从各自的消息队列里接收到信息。

示例代码

send2.py:

 1 #!/usr/bin/env python
 2 # coding=utf8
 3 # 每次消息都只会发送给其中一个接收端,如果需要将消息广播出去,让每个接收端都能收到,那么就要使用交换机
 4 # 定义交换机
 5 # 不是将消息发送到hello队列,而是发送到交换机
 6
 7 import pika
 8
 9 hostname = ‘192.168.1.133‘
10 parameters = pika.ConnectionParameters(hostname)
11 connection = pika.BlockingConnection(parameters)
12
13 channel = connection.channel()
14 # 定义交换机,设置类型为fanout
15 channel.exchange_declare(exchange=‘change_fan‘, type=‘fanout‘)
16
17 # 将消息发送到交换机
18 # basic_publish方法的参数exchange被设定为相应交换机
19 # 因为是要广播出去,发送到所有队列,所以routing_key就不需要设定
20 channel.basic_publish(exchange=‘change_fan‘, routing_key=‘‘, body=‘Hello World!‘)
21 print " [x] Sent ‘Hello World!‘"
22 connection.close()

receive2.py:

 1 #!/usr/bin/env python
 2 # coding=utf8
 3 # 定义交换机
 4 # 随机生成一个临时队列,并绑定到交换机上,从而接收端从临时队列获取消息
 5 import pika
 6
 7 hostname = ‘192.168.1.133‘
 8 parameters = pika.ConnectionParameters(hostname)
 9 connection = pika.BlockingConnection(parameters)
10
11 channel = connection.channel()
12 # 定义交换机,设置类型为fanout
13 channel.exchange_declare(exchange=‘change_fan‘, type=‘fanout‘)
14
15 # queue_declare的参数exclusive=True表示当接收端退出时,销毁临时产生的队列,这样就不会占用资源。
16 result = channel.queue_declare(exclusive=True)
17 # 随机生成队列,并绑定到交换机上
18 queue_name = result.method.queue
19 channel.queue_bind(exchange=‘change_fan‘, queue=queue_name)
20
21
22 def callback(ch, method, properties, body):
23     print " [x] Received %r" % (body,)
24
25 channel.basic_consume(callback, queue=queue_name, no_ack=True)
26
27 print ‘ [*] Waiting for messages. To exit press CTRL+C‘
28 channel.start_consuming()
时间: 2024-11-05 22:57:33

python中RabbitMQ的使用(交换机,广播形式)的相关文章

Python中变量赋值的8种形式、需要注意哪些细节?

本文解释python中变量赋值的形式,并解释一些细节. python中变量赋值的几种形式 1 x = "long" # (1).基本形式 2 x, y = "long", "shuai" # (2).元组对应赋值 3 [x, y] = ["long", "shuai"] # (3).列表对应赋值 4 a, b, c, d = "long" # (4).序列赋值 5 a, *b = 'lo

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

1,简介 RabbitMQ(Rabbit Message Queue)是流行的开源消息队列系统,用erlang语言开发. 1.1关键词说明: Broker:消息队列服务器实体.Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列.Queue:消息队列载体,每个消息都会被投入到一个或多个队列.Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来.Routing Key:路由关键字,exchange根据这个关键字进行消息投递.vhost:虚拟主机,一个b

Python编程系列---Python中装饰器的几种形式及万能装饰器

根据函数是否传参  是否有返回值 ,可以分析出装饰器的四种形式: 形式一:无参无返回值 1 def outer(func): 2 def wrapper(): 3 print("装饰器功能1") 4 ret = func() 5 print("装饰器功能2") return ret 6 return wrapper 7 8 # 定义一个无参无返回值的函数 9 @outer 10 def main_func(): 11 print("hello")

python中MySQLdb模块用法实例

篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中MySQLdb模块用法.分享给大家供大家参考.具体用法分析如下: MySQLdb其实有点像php或asp中连接数据库的一个模式了,只是MySQLdb是针对mysql连接了接口,我们可以在python中连接MySQLdb来实现数据的各种操作. python连接mysql的方案有oursql.PyMyS

python中消息队列RabbitMQ的使用

1,简介 RabbitMQ(Rabbit Message Queue)是流行的开源消息队列系统,用erlang语言开发. 1.1关键词说明: Broker:消息队列服务器实体.Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列.Queue:消息队列载体,每个消息都会被投入到一个或多个队列.Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来.Routing Key:路由关键字,exchange根据这个关键字进行消息投递.vhost:虚拟主机,一个b

吴恩达深度学习:python中的广播

1.python中的广播: (1)广播是一种手段,可以让python代码执行得更快,我们来看看python实际如何执行. 下面矩阵列出了100克苹果.牛肉.鸡蛋和蛋白质中含有的碳水化合物.蛋白质和脂肪的数量 比如说我们的目标是四种食物中卡路里有多少百分比.比如100克苹果中有56+1.2+1.8卡路里,然后苹果中来自碳水化合物的卡路里占比是百分之56/59=94.4%,所以苹果中大部分的热量都来自碳水化合物.我们要做的计算就是对上面四列数据求和,得到100g上面食物中卡路里的总量,这些食物分别是

Python自动化 【第十一篇】:Python进阶-RabbitMQ队列/Memcached/Redis

 本节内容: RabbitMQ队列 Memcached Redis 1.  RabbitMQ 安装 http://www.rabbitmq.com/install-standalone-mac.html 安装python rabbitMQ module pip install pika or easy_install pika or 源码 https://pypi.python.org/pypi/pika 实现最简单的队列 send 端 received 端 1.1 Work Queues 在这

python之rabbitMQ

一.简单的rabbitMQ队列通信 由上图可知,数据是先发给exchange交换器,exchage再发给相应队列.pika模块是python对rabbitMQ的API接口.接收端有一个回调函数,一接收到数据就调用该函数.一条消息被一个消费者接收后,该消息就从队列删除.OK,了解上面的知识后,先来看看一个简单的rabbitMQ列队通信. send端:  1 import pika 2 #连上rabbitMQ 3 connection=pika.BlockingConnection(pika.Con

python - 操作RabbitMQ

python - 操作RabbitMQ 介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术.排队指的是应用程序通过