fanout:广播:所有bind到此exchange的queue都可以接受到消息

生产者:

# coding:utf8
# __author: Administrator
# date: //
# /usr/bin/env python
#exchange订阅模式,是一个消息,大家都接收,原来是一人一个
import pika
import sys connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'
)) channel = connection.channel() #工作模式是在创建exchange时,设定的
#之前是创建队列,将数据放入队列中queue_declare(
'')
#但是当exchange开始工作的时候,不创建队列,开始创建一个交换机,为其命名,设置工作模式

channel.exchange_declare(exchange='logs',
type='fanout')
#创建交换机后数据不再走队列了,开始走交换机 message = "Info:Hello world"
channel.basic_publish(exchange='logs',
routing_key='',#空,没有作用,原来是记录队列名字,决定数据放到哪个队列下
body=message) print("Sent message")
connection.close()

消费者:

# coding:utf8
# __author: Administrator
# date: //
# /usr/bin/env python
import pika connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'
)) channel = connection.channel()
#和生产者相比,两者只会创建一个
channel.exchange_declare(exchange='logs',
type='fanout') #虽然生产者数据产生在交换机中,但是消费者取数据依然要到队列中去获取,
#每一个消费者都会重新产生一个队列
#队列创建中参数exclusive将产生一个独有的队列名,通过method.queue获取队列名
result = channel.queue_declare(exclusive=True)
queue_name = result.method.queue #将队列绑定当交换机中,从中获取数据来
channel.queue_bind(exchange='logs',
queue=queue_name) print('waiting for logs') def callback(ch,method,properties,body):
print("recv %s"%body) channel.basic_consume(callback,
queue=queue_name,
no_ack=True) channel.start_consuming()

python---RabbitMQ(2)exchange中订阅者模式fanout<广播>,(一对多,发布一条消息,多人同时接收)的更多相关文章

  1. RabbitMQ~说说Exchange的几种模式

    RabbitMQ里的Exchange提供了四种模式,或者叫它类型,它们是fanout,direct,topic和header,其中前三种模式我们用的比较多,所有我们主要介绍前3种! Direct 任何 ...

  2. RabbitMQ在java中基础使用

    RabbitMQ相关术语:          1.Broker:简单来说就是消息队列服务器实体.          2.Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列.      ...

  3. RabbitMQ原理——exchange、route、queue的关系

    从AMQP协议可以看出,MessageQueue.Exchange和Binding构成了AMQP协议的核心,下面我们就围绕这三个主要组件    从应用使用的角度全面的介绍如何利用Rabbit MQ构建 ...

  4. 深入学习RabbitMQ(四):channel的confirm模式

    转自:http://m.blog.csdn.net/article/details?id=54340711 上一篇博客我们介绍了使用RabbitMQ可能会遇到的一个问题,即生产者不知道消息是否真正到达 ...

  5. demo rabbitmq topic(主题模式),fanout(广播模式),轮询分发,确认接收Ack处理

    //durable = true 代表持久化 交换机和队列都要为true ,持久代表服务重启,没有处理的消息依然存在 //topic 根据不同的routkey 发送和接收信息 //fanout 广播模 ...

  6. ActiveMQ 快速入门教程系列 第二章 发布-订阅者模式实现

    第二章我们会介绍怎样实现一个发布者对多个订阅者的消息传递 Topic和queue的最大区别在于topic是以广播的形式,通知所有在线监听的客户端有新的消息,没有监听的客户端将收不到消息:而queue则 ...

  7. RabbitMQ 一二事(3) - 订阅模式(微信公众号模式)的应用

    之前讲的消费者互相可以把队列中的消息全部读取,但是不是读完整的所有信息 那么采用订阅模式就行,这就是微信公众号的模式, 比如10个人订阅了我的公众号"BeJavaGod",当我发送 ...

  8. RabbitMQ三种Exchange模式(fanout,direct,topic)的特性 -摘自网络

    RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direct, ...

  9. RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较

    RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direct, ...

随机推荐

  1. A Survey of Machine Learning Techniques Applied to Software Defined Networking (SDN): Research Issues and Challenges

    将机器学习用到SDN中的综述:研究的问题和挑战 从流量分类.路由优化.服务质量(Qos)/体验质量(QoE)预测.资源管理和安全性的角度,回顾了机器学习算法如何应用于SDN领域. 相关知识 在SDN中 ...

  2. maven私服 Nexus2.x.x私服安装配置

    一.Nexus的下载和安装 1.下载nexus ,下载地址:https://www.sonatype.com/download-oss-sonatype  2.打开目录nexus-2.x.x-xx-b ...

  3. /langversion 的选项“4”无效;必须是 ISO-1、ISO-2、3 或 Default SystemFrameWorkV3

    https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version Edit th ...

  4. pcntl php多进程

    <?php $i=0;while($i!=5){ $pid = pcntl_fork(); if ($pid == 0) { echo $pid."---------hahah&quo ...

  5. aliyun centos14.04 trusty 上安装docker1.12.1

    现在apt这边拿到的docker最新版本就是1.12.1 其实本来这次不准备记录了,本以为一帆风顺的安装最后还是遇到了一点坑,aliyun的锅,卡成狗无法下载.青岛机房 1.更新源,然后安装ca-ce ...

  6. flask+mako+peewee(上)

    其实关于什么用flask搭建一个后台博客啥的跟着官方文档做一遍就行了.感觉啥都有我这里就不赘述了只是记录一个笔记,因为稍微有几个地方有点坑. 目标:做了一个简易页面给电商的同事用来添加商品 首先是安装 ...

  7. Java之使用HttpClient发送GET请求

    package LoadRunner; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import o ...

  8. python之unittest单元测试

    # unittest单元测试 import unittest from class_demo import Car class TestCar(unittest.TestCase): '''测试Car ...

  9. Bootstrap面板

    前面的话 面板(Panels)是Bootstrap框架新增的一个组件,某些时候可能需要将某些 DOM 内容放到一个盒子里.对于这种情况,可以使用面板组件.本文将详细介绍Bootstrap面板 基础面板 ...

  10. BZOJ5286: [Hnoi2018]转盘 (线段树)

    题意 给你绕成一圈的物品共 \(n\) 个 , 然后从其中一个开始选 , 每次有两种操作 , 一是继续选择当前物品 , 二是选择这个后一个物品 . 选择后一个物品要求当前的时刻大于后一个的 \(T_i ...