Fanout类型交换机忽略Routing Key,它将消息传递到所有与它绑定的队列上。

 

 


 
Producer.java
package com.test.fanout;
 
import com.rabbitmq.client.*;
 
import java.io.IOException;
import java.lang.String;
import java.lang.System;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
 
public class Producer {
 
    public static void
main(String[] args) throws Exception {
     
//使用默认端口连接MQ
     
  ConnectionFactory factory = new
ConnectionFactory();
   
factory.setUsername("admin");
   
factory.setPassword("admin");
     
  factory.setHost("192.168.169.142");
//使用默认端口5672
     
  Connection conn = factory.newConnection();
//声明一个连接
     
  Channel channel = conn.createChannel();
//声明消息通道
   
String message = "hello world!";
String queueName1 = "queue_fanout1";
String queueName2 = "queue_fanout2";
String queueName3 = "queue_fanout3";
String exchangeName = "test.fanout";
//Routing Key
channel.queueDeclare(queueName1, false, false, false,
null);
channel.queueDeclare(queueName2, false, false, false,
null);
channel.queueDeclare(queueName3, false, false, false,
null);
channel.exchangeDeclare(exchangeName, "fanout", false, false,
null);
 
channel.queueBind(queueName1, exchangeName, "");
channel.queueBind(queueName2, exchangeName, "");
channel.queueBind(queueName3, exchangeName, "");
 
channel.basicPublish(exchangeName, "",
MessageProperties.TEXT_PLAIN, message.getBytes());
 
System.out.println("Message \"" + message + "\" sent
successfully.");
 
channel.close();
conn.close();
    }
 
}
 
Customer.java
package com.test.fanout;
import com.rabbitmq.client.AMQP.BasicProperties;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.ShutdownSignalException;
 
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
//通过channel.basicAck向服务器发送回执,删除服务上的消息
public class Consumer implements
com.rabbitmq.client.Consumer{
private Channel channel;
 
    public static void
main(String[] args) throws Exception {
     
//使用默认端口连接MQ
     
  ConnectionFactory factory = new
ConnectionFactory();
   
factory.setUsername("admin");
   
factory.setPassword("admin");
     
  factory.setHost("192.168.169.142");
//使用默认端口5672
     
  Connection conn = factory.newConnection();
//声明一个连接
     
  Channel channel = conn.createChannel();
//声明消息通道
 
String queueName = args[0];//"queue_fanout1";
 
channel.queueDeclare(queueName, false, false, false,
null);
 
Consumer consumer = new Consumer();
consumer.channel = channel;
 
channel.basicConsume(queueName, false, consumer);
    }
 
@Override
public void handleConsumeOk(String consumerTag) {
// TODO Auto-generated method stub
System.out.println("Consumer \"" + consumerTag + "\" has
subscribed.");
}
 
@Override
public void handleCancelOk(String consumerTag) {
// TODO Auto-generated method stub
}
 
@Override
public void handleCancel(String consumerTag) throws
IOException {
// TODO Auto-generated method stub
}
 
@Override
public void handleDelivery(String consumerTag, Envelope
env,
BasicProperties props, byte[] body) throws IOException {
// TODO Auto-generated method stub
System.out.println("Message \"" + new String(body) + "\"
received.");
channel.basicAck(env.getDeliveryTag(), false);
}
 
@Override
public void handleShutdownSignal(String consumerTag,
ShutdownSignalException sig) {
// TODO Auto-generated method stub
}
 
@Override
public void handleRecoverOk(String consumerTag) {
// TODO Auto-generated method stub
}
}
 
 

10.RabbitMQ Fanout类型交换机的更多相关文章

  1. RabbitMQ fanout类型的Exchange

    就目前来说,Exchange是与消息发送端有关的,因为它可以指定将消息发送到哪个或哪些队列中. 本篇文章介绍的fanout类型就是指定将消息群发到与Exchange绑定的所有队列中. fanout这个 ...

  2. 9.RabbitMQ Topic类型交换机

    RabbitMQ消息服务中Topic类型交换机根据通配符路由消息,*代表一个单词,#代表代表0或多个单词.   生产者 消费者   代码 Producer.java   package com.tes ...

  3. RabbitMQ与.net core(三) fanout类型Exchange 与 消息的过期时间 与 队列的存活时间

    上一篇我们讲了关于direct类型的Exchange,这一片我们来了解一下fanout类型的Exchange. 1.Exchange的fanout类型 fanout类型的Exchange的特点是会把消 ...

  4. RabbitMQ七:交换机类型Exchange Types--Fanout 介绍

    前言 最新版本的RabbitMQ有四种交换机类型,分别是Direct exchange.Fanout exchange.Topic exchange.Headers exchange. 其中之前我们用 ...

  5. RabbitMQ Exchange中的fanout类型

    fanout 多播 在之前都是使用direct直连类型的交换机,通过routingkey来决定把消息推到哪个queue中. 而fanout则是把拿到消息推到与之绑定的所有queue中. 分析业务,怎样 ...

  6. 【RabbitMQ学习之二】RabbitMQ四种交换机模式应用

    环境 win7 rabbitmq-server-3.7.17 Erlang 22.1 一.概念1.队列队列用于临时存储消息和转发消息.队列类型有两种,即时队列和延时队列. 即时队列:队列中的消息会被立 ...

  7. 四、RabbitMQ Exchange类型

    RabbitMQ整体上是一个生产者与消费者模型,主要负责接收.存储和转发消息.可以把消息传递的过程想象成:当你将一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上,RabbitMQ就好 ...

  8. rabbit的fanout扇形交换机

    rabbit引入交换机概念. 交换机与生产者绑定. 队列与消费者绑定. 队列又与交换机绑定. 扇形交换机是  fanout类型的. 类似于其他消息中间件的 topic.一对多(生产者推送消息到指定交换 ...

  9. .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ 工作队列和交换机)--学习笔记

    2.6.4 RabbitMQ -- 工作队列和交换机 WorkQueue Publish/Subscribe Routing EmitLog WorkQueue WorkQueue:https://w ...

随机推荐

  1. 【LeetCode 25】K 个一组翻转链表

    题目链接 [题解] 模拟就好. 就k个k个节点地翻转. 每个节点都把next域指向它前面那个节点 修改完之后把这个节点前面的那个节点的next域改成这一段的最后一个节点. 然后把这一段最左边的那个节点 ...

  2. 向量vector 容器浅析

    一.什么是vector? 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container).跟任意其它类型容器一样,它能够存放各种类型的对象.可以简单的认为,向量是一个能 ...

  3. Html加水印和禁用复制和右键(jquery.watermark.js)

    近期遇到一个需求,需要在页面背景加上自己的水印和禁止用户在页面复制粘贴 解决: 水印使用的是jquery.watermark.js插件,这个插件可以在html背景上加水印,同时可以设置相关属性值. 相 ...

  4. NX二次开发-Block UI C++界面Face Collector(面收集器)控件的获取(持续补充 )

    Face Collector(面收集器)控件的获取 NX9+VS2012 #include <uf.h> #include <uf_obj.h> UF_initialize() ...

  5. JS闭包的详解

    目录 一.什么是闭包? 二.闭包有什么好处?应用在哪? 2.1 好处: 2.2 用法: 三.闭包需要注意的地方? 3.1 IE下会引发内存泄露 一.什么是闭包? 特点: 1 函数嵌套函数 2 内部函数 ...

  6. eclipse spring boot 项目出现java.lang.ClassCastException 解决方法

    问题 eclipse spring boot 项目出现java.lang.ClassCastException 解决方法: 重新生成项目

  7. OSPF中DR和BDR到底是谁先选举出来的?

    在OSPF的DRBDR选举的过程中,DR的选举依靠的是hello报文,在two-way之后,交互hello报文完成DR/BDR的选举. 那么在每台路由器根据收到的所有hello报文,会构建自己接口的数 ...

  8. VC++ 2010 创建高级Ribbon界面详解(2)

    Ribbon 控件的使用 1.命令按钮 命令按钮可以说是我们最常用的Ribbon控件了,我们通常都是通过命令按钮来发送某个命令,执行某个动作.它代替了过去的菜单命令,成为使用最频繁的Ribbon控件. ...

  9. Straight Master (贪心)

    题目如下:A straight is a poker hand containing five cards of sequential rank, not necessarily to be the ...

  10. 如何解决 react-create-app 里面的 no-unused-vars ?

    如果每次启动都有一大串的no-unused-vars 是不是感觉特别烦,不用担心啦,有个配置可以解决它: 在Hbuild 里面可以新建一个 .eslintrc 其他文件(伤心的是我在webStorm ...