RabbitMQ第四个实操小案例——DirectExchange

news2024/9/20 0:50:31

文章目录

  • RabbitMQ第四个实操小案例——DirectExchange

RabbitMQ第四个实操小案例——DirectExchange

DirectExchange:这种交换机的模式跟前面的Fouout(广播)不太一样,DirectExchange 会将接收到的消息根据规则路由到指定的Queue,因此也被称之为 路由模式(routes)。

他的模型如下所示:
在这里插入图片描述
我们先说一下上面这个图吧:

  • 每一个Queue都与Exchange绑定一个或多个bingingKey。(上面queue1与exchange绑定的bindingKey有red和blue,queue2与exchange绑定的bindingKey有red和yellow。)
  • Publisher发送消息时,指定消息的bindingKey。
  • Exchange根据消息的bindingKey,将消息转发到对应的Queue。
    • 假如现在发送的消息的bindingKey为blue,那么消息将被queue1接收。
    • 假如现在发送的消息的bindingKey为yellow,那么消息将被queue2接收。
    • 假如现在发送的消息的bindingKey为red,那么消息将被queue1和queue2同时接收。

OK,废话少说,老规矩,咱们代码来一波:
实现思路:

步骤一、配置我们的配置类。
步骤二、在Consumer服务中,编写两个消费者方法,分别监听direct.queue1和direct.queue2。
步骤三、在Publisher服务中,编写测试方法,向交换机exchange.direct发送消息。

步骤一、使用我们的@RabbitListener注解声明我们的Exchange、Queue、RoutingKey,编写两个消费者方法。

@RabbitListener(bindings = @QueueBinding(
        value = @Queue(name = "direct.queue1"),
        exchange = @Exchange(name = "exchange.direct", type = ExchangeTypes.DIRECT),
        key = {"red", "blue"}
))
public void listenerDirectQueue1(String msg){
    System.out.println("监听到 direct.queue1 的消息为:【"+ msg +"】");
}

@RabbitListener(bindings = @QueueBinding(
        value = @Queue(name = "direct.queue2"),
        exchange = @Exchange(name = "exchange.direct", type = ExchangeTypes.DIRECT),
        key = {"red", "yellow"}
))
public void listenerDirectQueue2(String msg){
    System.err.println("监听到 direct.queue2 的消息为:【"+ msg +"】");
}

编写完代码,我们重启一下我们的消费者服务,然后我们看一下我们的RabbitMQ。可以看到,此时我们的交换机中,绑定的有两个queue,其中queue1监听的RoutingKey有blue和red、queue2监听的RoutingKey有yellow和red。
在这里插入图片描述
我们也可以看看我们的queue,确实也多了俩,一个叫direct.queue1,一个叫direct.queue2。
在这里插入图片描述

步骤二、在Publisher服务中,编写测试方法,向交换机exchange.direct发送消息。

    @Test
    public void testDirectExchange(){
        //交换机的名称
        String exchangeName = "exchange.direct";
        //消息
        String blueMsg = "Hello, Blue.";
        String redMsg = "Hello, Red.";
        String yellowMsg = "Hello, Yellow.";
        //发送消息
        for (int i = 0; i < 10; i++){
            if (i % 3 == 0){
                rabbitTemplate.convertAndSend(exchangeName, "blue", blueMsg);
            }else if (i % 3 == 1){
                rabbitTemplate.convertAndSend(exchangeName, "yellow", yellowMsg);
            }else {
                rabbitTemplate.convertAndSend(exchangeName, "red", redMsg);
            }
        }
    }

运行我们的测试方法后,我们看一下Consumer服务的控制台打印消息:
在这里插入图片描述
可以看到,direct.queue1 监听到的消息有 Hello, Red 和 Hello, Blue,而direct.queue2 监听到的消息有 Hello, Red 和 Hello, Yellow.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(免费分享)基于springboot,vue毕业设计管理系统

源码获取&#xff1a;关注文末gongzhonghao&#xff0c;输入011领取下载链接 开发工具IDEA ,数据库mysql5.7 &#xff0c;前后端分离 系统分学生、教师、管理员三个角色 1.学生截图 2.教师截图&#xff1a; 3.管理员截图&#xff1a; package com.cx.controller;import cn.…

C++实现哈希表。

目录 一. unordered_map unordered_set 和 map set的区别 二. 哈希 1. 哈希&#xff0c;哈希表&#xff0c;哈希函数。 2. 哈希冲突。 3. 哈希函数补充 3. 解决哈希冲突的两大方法&#xff1a;闭散列&#xff0c;开散列 闭散列 闭散列实现代码&#xff1a; 闭散列的删除…

MDF和DHF、DMR、DHR三者差异?注册与备案文件?

医疗器械研发、工艺、注册、质量人员时常会接触到DHF, DMR, DHR。这几个单词缩写不光是拼写非常相似&#xff0c;其含义也有许多相同之处&#xff0c;所以十分容易混淆。本文就来聊一聊这三者的区别和联系。 ISO13485:2016 证明符合法规要求 MDF-Medical Device File&#xf…

计算机毕业设计——税务缴纳信息管理

一.项目介绍 本项目包含管理员、普通用户两种角色 普通用户 可以浏览 首页、新闻信息、法律法规、税务政策、通知公告、留言板、个人中心、后台管理、在线咨询 普通用户进入后台管理可以修改密码、个人信息以及税务申报、填写留言 管理员用户登录可以操作 个人中心、用…

服务器证书是网络信息安全的基础

我们都清楚&#xff0c;互联网安全存在两大基本隐患&#xff0c;一是因为身份认证机制的缺位&#xff0c;使网络成为各种“钓鱼”诈骗行为的温床&#xff0c;导致互联网空间缺乏信任。互联网每时每刻都在传输数以亿万的信息&#xff0c;这些信息如果未经加密&#xff0c;就有可…

自动化测试如何区分用例集合及编写规范

目录 前言 业务量和复杂度增长现状是什么&#xff1f; 如何区分自动化测试的用例集合&#xff1f; 区分用例集合的过程要注意什么&#xff1f; 自动化测试用例选择 自动化测试用例编写 用例编写规范 结语 前言 前面的文章介绍过如何设计自动化测试case&#xff0c;有同…

一、翻越前端的三座大山——继承/原型链

文章目录原型专题前言什么是原型&#xff1f;实例和原型的关系什么是原型链&#xff1f;Object 和 Function 的继承关系原型运用例子&#xff1a;手写instanceof手写call&#xff0c;apply手写new六大继承方式原型链继承构造函数继承原型链 构造函数优化&#xff08;原型链 构…

mysql 中的锁

文章目录锁的分类锁粒度InnoDB 中的表锁InnoDB 中的行锁锁的分类 共享锁&#xff08;Shared Locks&#xff09; // 行共享锁 // 获取到当前记录的S锁&#xff08;共享锁&#xff09;&#xff0c;兼容其他事务的S锁&#xff0c;不兼容X锁&#xff08;排他锁&#xff09; select…

服务注册中心

什么是注册中心&#xff1f; 注册中心主要有三种角色&#xff1a; ● 服务提供者&#xff08;Provider&#xff09;&#xff1a;在启动时&#xff0c;向 Registry 注册自身服务&#xff0c;并向 Registry 定期发送心跳汇报存活状态。 ● 服务消费者&#xff08;Consumer&#…

HCSC: Hierarchical Contrastive Selective Coding

原型对比学习&#xff1a;图像表征与聚类中心之间的交互&#xff0c;可以简单总结为在表征空间中最大化图像特征与其所属的聚类中心的相似度。分层语义结构 自然存在于图像数据集中&#xff0c;其中几个语义相关的图像簇可以进一步集成到一个更大的簇中&#xff0c;具有更粗粒度…

Tomcat多实例部署

文章目录一、Tomcat多实例的操作步骤1、关闭防火墙&#xff0c;将安装 Tomcat 所需软件包传到/opt目录下2、安装JDK3、安装 tomcat4、配置 tomcat 环境变量5、修改 tomcat2 中的 server.xml 文件&#xff0c;要求各 tomcat 实例配置不能有重复的端口号6、修改各 tomcat 实例中的…

openpnp软件的使用 - 配置自动电动飞达

文章目录openpnp软件的使用 - 配置自动电动飞达概述笔记新建执行器(电动飞达类型)新建电动飞达的料站配置飞达的x,y位置配置飞达移动到料表面时的高度测试这个Z高度, 是否能让吸嘴取得元件?设置元件料封装使用的吸嘴.试试开始贴片贴片后的元件位置目测备注ENDopenpnp软件的使用…

实操小微风控报告中的地址信息的清洗与照面和司法数据使用

在中小微企业的大数据风控体系中&#xff0c;工商数据与司法数据是最基本也是最常见的两类信息维度&#xff0c;在企业大数据体系的应用场景中扮演着重要角色。由于企业工商与司法数据的多部分内容属于社会公开化信息&#xff0c;因此在行业市场内也是非常容易获取的&#xff0…

详解:看似遥不可及的元宇宙

导语:元宇宙是人们娱乐、生活乃至工作的虚拟时空。Roblox 这款游戏,展示了元宇宙的诸多特征。核心是数字创造、数字资产、数字交易、数字货币和数字消费,尤其是在用户体验方面,达到了真假难辨、虚实混同的境界。 大约再过15 年,互联网就可能会发生一次重大的变革。正如从…

技术 | 终端安全 | 服务器并不像您想象的那么安全

在从1到10的评分中&#xff0c;现状方法对服务器安全的有效性如何&#xff1f; 从理论上讲&#xff0c;应该是10分。保护服务器免受外界影响的途径(分段、防火墙、漏洞修补、安全解决方案等)是众所周知的。 然而&#xff0c;现实生活的结果显示出与理论的巨大差距。从红十字会…

【前端】Ajax-form表单与模板引擎

目录 一、form表单的基本使用 1.1什么是表单 1.2表单的组成部分 1.3form标签属性 1.4表单的同步提交及缺点 1.4.1什么是表单的同步提交 1.4.2表单同步提交的缺点 1.4.3如何解决表单同步提交的缺点 二、通过Ajax提交表单数据 2.1监听表单提交事件 2.2阻止表单默认提交…

(超级详细1秒钟秒懂)华为网络初级工程师知识总结(一)

文章目录一&#xff0c;人机交互的工作模式二&#xff0c;OSI参考模型---OSI/RM三&#xff0c;常见的网络协议端口号四&#xff0c;网络层的地址查询&#xff0c;转发。五&#xff0c;ARP协议的转发原理六&#xff0c;TCP/IP协议的封装和解封装及跨层封装一&#xff0c;人机交互…

预编码ZF,MMSE,THP准则线性预编码误码率仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 恒定包络( Constant Enve-lope&#xff0c;CE) 预编码&#xff1b; 该算法规定&#xff0c;每根天线上的发射功率被限定为一个与信道条件和信号符号均无关的常数&#xff0c;各根天线均…

Nacos下载和安装步骤

1. 下载安装包 1.1. Nacos官网 :https://nacos.io/zh-cn/hub 打开官网&#xff0c;点击前往Github 1. Nacos官网 1.2. 打开Nacos Github主页&#xff0c;点击Release&#xff0c;点击tags&#xff0c;可以看到所有的版本&#xff0c;选择自己需要的版本下载 Nacos Github主页 …

线性代数 --- 投影Projection 四(投影有什么用?Why projection)

笔者在本系列的开篇就说过&#xff0c;我在学习投影的过程中&#xff0c;有很长的一段时间都是把重点放在了&#xff0c;如何计算投影本身&#xff0c;也就是背公式。 现在我发现&#xff08;尤其是明白了投影即分量之后&#xff09;&#xff0c;学习投影的主要目的&#xff0c…