前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ05-交换器【fanout】介绍

RabbitMQ05-交换器【fanout】介绍

作者头像
用户4919348
发布2019-05-23 11:16:53
5260
发布2019-05-23 11:16:53
举报
文章被收录于专栏:波波烤鸭波波烤鸭

交换器介绍

  RabbitMQ中有三种主要的交互器分别如下

交换器

说明

direct

发布与订阅 完全匹配

fanout

广播

topic

主体,规则匹配

Fanout

  FanoutExchange 的数据交换策略是把所有到达 FanoutExchang 的消息转发给所有与它绑定的Queue ,在这种策略中, routingkey 将不起任何作用.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.创建消费者

项目结构

在这里插入图片描述
在这里插入图片描述

配置文件

代码语言:javascript
复制
spring.application.name=springcloud-mq
spring.rabbitmq.host=192.168.88.150
spring.rabbitmq.port=5672
spring.rabbitmq.username=dpb
spring.rabbitmq.password=123

mq.config.exchange=order.fanout
#短信服务队列名称
mq.config.queue.sms=order.sms
#push 服务队列名称
mq.config.queue.push=order.push

两个消费者

代码语言:javascript
复制
@Component
@RabbitListener(
bindings=@QueueBinding(
        value=@Queue(value="${mq.config.queue.sms}",autoDelete="true"),
                exchange=@Exchange(value="${mq.config.exchange}",type= ExchangeTypes.FANOUT)
        )
)
public class SmsReciver {
    /**
     * 接收消息的方法。采用消息队列监听机制
     * @param msg
     */
    @RabbitHandler
    public void process(String msg){
         System.out.println("Sms........receiver: "+msg);
    }
}
代码语言:javascript
复制
@Component
@RabbitListener(
bindings=@QueueBinding(
        value=@Queue(value="${mq.config.queue.push}",autoDelete="true"),
                exchange=@Exchange(value="${mq.config.exchange}",type= ExchangeTypes.FANOUT)
        )
)
public class PushReciver {
    /**
     * 接收消息的方法。采用消息队列监听机制
     * @param msg
     */
    @RabbitHandler
    public void process(String msg){
         System.out.println("Push........receiver: "+msg);
    }
}

启动后等待接收消息即可~

2.创建订单服务

项目结构

在这里插入图片描述
在这里插入图片描述

配置文件

代码语言:javascript
复制
spring.application.name=springcloud-mq
spring.rabbitmq.host=192.168.88.150
spring.rabbitmq.port=5672
spring.rabbitmq.username=dpb
spring.rabbitmq.password=123
#设置交换器的名称
mq.config.exchange=order.fanout

服务提供者

代码语言:javascript
复制
/**
 * @program: rabbitmq-direct-provider
 * @description: 发送者
 * @author: 波波烤鸭
 * @create: 2019-05-22 15:51
 */
@Component
public class Sender {
    @Autowired
    private AmqpTemplate rabbitAmqpTemplate;
    //exchange 交换器名称
    @Value("${mq.config.exchange}")
    private String exchange;
    /*
     * 发送消息的方法
     */
    public void send(String msg){
        //向消息队列发送消息
        //参数一:交换器名称。
        //参数二:路由键
        //参数三:消息
        this.rabbitAmqpTemplate.convertAndSend(this.exchange,"", msg);
    }
}

单元测试

代码语言:javascript
复制
@RunWith(SpringRunner.class)
@SpringBootTest(classes = RabbitmqDirectProviderApplication.class)
public class RabbitmqDirectProviderApplicationTests {

    @Autowired
    private Sender sender;

    @Test
    public void contextLoads() throws Exception{
        sender.send("hello .... ");
    }
}

启动后查看消费者的控制台

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 交换器介绍
  • Fanout
    • 1.创建消费者
      • 2.创建订单服务
      相关产品与服务
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档