当前位置: 首页 > news >正文

SpringAMQP发布、订阅——Fanout Exchange交换机代码模拟

发布订阅模型:

MQ提供了很多交换机模型 其中常用的有下边三个:

Fanout:广播

Direct:路由

Topic:话题

转换器只负责消息路由,不是存储,路由失败则消息丢失

Fanout Exchange:会将接收到的消息路由导每一个跟其绑定的queue.

利用SpringAMQP演示FanoutExchange的使用:

实现代码:

在consumer编写工具类,实现交换机和队列的绑定:

package cn.itcast.mq.configu;import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @className:cn.itcast.mq.configu.BindExchangeToQueue* @description:by-li* @author:Administrator* @create:2024-05-1116:33*/
@Configuration
public class BindExchangeToQueue {//声明交换机@Beanpublic FanoutExchange fanoutExchange() {return new FanoutExchange("itcast.fanout");}//生命queue@Beanpublic Queue fanoutqueue1() {return new Queue("itcast.queue1");}@Beanpublic Queue fanoutqueue2() {return new Queue("itcast.queue2");}//绑定交换机@Beanpublic Binding fanoutExchangeToQueue1Bind(Queue fanoutqueue1, FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutqueue1).to(fanoutExchange);//绑定交换机和队列}@Beanpublic Binding fanoutExchangeToQueue2Bind(Queue fanoutqueue2, FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutqueue2).to(fanoutExchange);//绑定交换机和队列}}

在consumer实体类里编写接收两个队列请求的方法:

    @RabbitListener(queues = "itcast.queue1")public void lintestFanoutExchangeToQueue1(String mes) throws InterruptedException {System.out.println("从队列1中获取到了消息:"+mes);Thread.sleep(200);}@RabbitListener(queues = "itcast.queue2")public void lintestFanoutExchangeToQueue2(String mes) throws InterruptedException {System.out.println("从队列2中获取到了消息:"+mes);Thread.sleep(200);}

在publisher里编写测试方法 模拟给交换机发送消息:

//给FanoutExchange交换机发送消息@Testpublic void testFanoutExchangeSend(){String FanoutChangeName = "itcast.fanout";String msg="我是fannout发送的消息";rabbitTemplate.convertAndSend(FanoutChangeName,"",msg);}

然后发送请求和启动consumer类,在控制台查看:

这里看到我们只发送了一条消息,但是两个consumer消费者都接收到了消息,能看出来Fanout Exchange交换机将收到的消息发到了给他绑定的两个queue里了

总结:

http://www.lryc.cn/news/346464.html

相关文章:

  • js原生三种弹框
  • LWIP+TCP客户端
  • 程序人生 | 人生如棋,落子无悔
  • python的deap库使用记录
  • 一份简历的制作
  • 网络匿名--不只是TOR
  • 【论文阅读笔记】Order Matters(AAAI 20)
  • 中科院突破:TalkingGaussian技术实现3D人脸动态无失真,高效同步嘴唇运动!
  • fastText-文本分类
  • 【nodejs 命令行交互神器 - inquirer.js】
  • Liunx软件包管理(上)
  • 华为eNSP中型企业局域网网络规划设计(下)
  • C语言(指针)1
  • perl:用 MIDI::Simple 生成midi文件,用 pygame 播放 mid文件
  • 数据库-脏读
  • react 用合计项
  • IP 地址追踪工具促进有效的 IP 管理
  • 快手蓝V商家电话采集软件操作教程
  • 工业机器人应用实践之玻璃涂胶(篇二)
  • C++ 455. 分发饼干
  • 未来娱乐新地标?气膜球幕影院的多维体验—轻空间
  • 工业机器人应用实践之玻璃涂胶(篇三)
  • 基于Huffman编码的字符串统计及WPL计算
  • 处理VS2022中(C/C++)scanf报错问题(3种)
  • C#面:Session 喜欢丢值且占内存,Cookis不安全,请问 C# 可以用什么办法代替这两种原始的方法
  • Python并发编程 05 锁、同步条件、信号量、线程队列、生产者消费者模型
  • UIKit之UIButton
  • 阿里云VOD视频点播流程(2)
  • 在Ubuntu上搭建幻兽帕鲁服务器
  • Java中常用类String的不可变性详解