SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.23 SpringBoot 整合 RabbitMQ(direct 模式)

news2024/11/25 2:35:06

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 开发实用篇

文章目录

      • SpringBoot
      • SpringBoot 开发实用篇
      • 5 整合第三方技术
        • 5.23 SpringBoot 整合 RabbitMQ(direct 模式)
          • 5.23.1 AMQP
          • 5.23.2 整合 RabbitMQ
          • 5.23.3 小结

5 整合第三方技术

5.23 SpringBoot 整合 RabbitMQ(direct 模式)

5.23.1 AMQP

现在我们已经把RabbitMQ 装上了

之前我们做ActiveMQ 的时候

默认是p2p 模型

在这里插入图片描述

在这里插入图片描述

而在AMQP 中

在这里插入图片描述

5.23.2 整合 RabbitMQ

【导入坐标】

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

按照协议名导入的

在这里插入图片描述

【配置】

rabbitmq:
  host: localhost
  port: 5672

在这里插入图片描述

【实现】

在这里插入图片描述

在这里插入图片描述

先把之前做的 ActiveMQ 实现的注掉

【配置类】

package com.dingjiaxiong.service.impl.rabbitmq.direct.config;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * ClassName: RabbitConfigDirect
 * date: 2022/10/22 21:29
 *
 * @author DingJiaxiong
 */

@Configuration
public class RabbitConfigDirect {

    //存储消息的消息队列的对象
    @Bean
    public Queue directQueue(){

        return new Queue("direct_queue"); //是否持久化、是否连接专用、是否自动删除【后面其实有三个boolean参数,默认值是tff】
    }

    //还可以再来个队列,让它绑在同一个交换机上
    @Bean
    public Queue directQueue2(){
        return new Queue("direct_queue2"); //是否持久化、是否连接专用、是否自动删除【后面其实有三个boolean参数,默认值是tff】
    }

    //消息队列不能直接使用,需要使用一个交换机去绑定它
    @Bean
    public DirectExchange directExchange(){
        return new DirectExchange("directExchange");
    }

    //做消息队列与交换机的绑定关系
    @Bean
    public Binding bindingDirect(){
        return BindingBuilder.bind(directQueue()).to(directExchange()).with("direct");
    }

    //做消息队列与交换机的绑定关系
    @Bean
    public Binding bindingDirect2(){
        return BindingBuilder.bind(directQueue2()).to(directExchange()).with("direct2");
    }


}

实现类

package com.dingjiaxiong.service.impl.rabbitmq.direct;

import com.dingjiaxiong.service.MessageService;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * ClassName: MessageServiceRabbitmqDirectImpl
 * date: 2022/10/22 21:25
 *
 * @author DingJiaxiong
 */

@Service
public class MessageServiceRabbitmqDirectImpl implements MessageService {

    @Autowired
    private AmqpTemplate amqpTemplate;

    @Override
    public void sendMessage(String id) {

        System.out.println("待发送短信的订单已纳入处理队列(rabbitmq direct),id " + id);
        amqpTemplate.convertAndSend("directExchange","direct",id);

    }

    @Override
    public String doMessage() {
        return null;
    }
}

做一个自动监听

package com.dingjiaxiong.service.impl.rabbitmq.direct;

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/**
 * ClassName: MessageListener
 * date: 2022/10/22 21:40
 *
 * @author DingJiaxiong
 */

@Component
public class MessageListener {

    //收一个消息
    @RabbitListener(queues = "direct_queue")
    public void receive(String id){

        System.out.println("已完成短信发送业务(rabbitmq direct),id:" + id);

    }

}

有了这个监听就不用去手动消费了

OK, 直接开启服务器测试

生产一个

在这里插入图片描述

这个就是listener 自动处理的

看看控制台

在这里插入图片描述

可以看到已经有两个消息队列了

来自我们初始化时,配置类中

在这里插入图片描述

这两个东西

稍微修改一下

把监听类放到一个包里

在这里插入图片描述

将其复制一个2

package com.dingjiaxiong.service.impl.rabbitmq.direct.listener;

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/**
 * ClassName: MessageListener
 * date: 2022/10/22 21:40
 *
 * @author DingJiaxiong
 */

@Component
public class MessageListener2 {

    //收一个消息
    @RabbitListener(queues = "direct_queue")
    public void receive(String id){

        System.out.println("已完成短信发送业务(rabbitmq direct two),id:" + id);

    }

}

现在就有两个监听, 而且都监听的是同一个队列

直接启动看看效果

在这里插入图片描述

我一共发了四次

可以看到它俩是轮流着在对消息进行处理

就是这样,回顾一下

  • 导入SpringBoot整合RabbitMQ坐标

在这里插入图片描述

  • 配置RabbitMQ (采用默认配置)

在这里插入图片描述

  • 定义消息队列(direct)

在这里插入图片描述

  • 定义消息队列(direct)

在这里插入图片描述

在这里插入图片描述

  • 生产与消费消息(direct)

在这里插入图片描述

  • 使用消息监听器对消息队列监听(direct)

在这里插入图片描述

  • 使用多消息监听器对消息队列监听进行消息轮循处理(direct)

在这里插入图片描述

5.23.3 小结
  1. SpringBoot整合RabbitMQ直连交换机模式【direct】

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

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

相关文章

web前端期末大作业——基于html+css+javascript+jquery+bootstrap响应式户外旅游网站

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

分析高数值孔径物镜的聚焦

摘要 高数值孔径物镜广泛用于光学光刻、显微镜等。因此&#xff0c;在聚焦模拟中考虑光的矢量性质是非常重要的。 VirtualLab非常容易支持这种镜头的光线和光场追迹分析。 通过光场追迹&#xff0c;可以清楚地展示不对称焦斑&#xff0c;这源于矢量效应。 照相机探测器和电磁场…

解决台式机麦克风不可用问题,只有音频输出,无音频输入

解决台式机麦克风不可用问题 戴尔灵越3880 最近因为需要开线上会议&#xff0c;发现戴尔台式机音频只有输出没有输入&#xff0c;也就是只能听见声音&#xff0c;无法输入声音。 先后尝试了各种驱动安装更新之类的调试&#xff0c;无果。 之后通过戴尔支持解决~ 这里多说一…

京东主图视频上传,如何关联商品投放?

京东主图视频怎么做&#xff0c;如何上传主图视频&#xff1f;大家都知道商品可以展示五张主图&#xff0c;主图可以帮助买家更好地了解产品卖点。而主图视频可以更全面的展示产品&#xff0c;对此京麦还设置了不同类型的视频模板&#xff0c;但是很多新手商家往往在上传视频的…

适配器模式(Gateway中GatewayFilter和GlobalFilter整合实现)

文章目录GlobalFilter(代表全局过滤器)GatewayFilter(代表路由过滤器)GlobalFilterAdapter(适配器关键)测试类执行结果在SpringCloud Gateway中有两个不同的过滤器接口&#xff0c;分别是GatewayFilter和GlobalFilter。 GlobalFilter&#xff1a;全局过滤器。不需要再配置文件…

在外公网调阅公司内网资料文件【内网穿透】

优盘体积小巧重量轻&#xff0c;是不少人移动存储数据的首选。但优盘虽然方便携带&#xff0c;但也正是因为小巧和轻便&#xff0c;导致一不留神就会丢失&#xff0c;并且存储的数据也会有损坏的风险&#xff0c;因此在云存储概念兴起后&#xff0c;就快速成为数据存储的新风尚…

网络安全之反序列化漏洞复现

0x01 Apereo cas简介 Apereo CAS 单点登陆系统是Java服务器环境下使用较为广泛的单点登陆系统。 CAS 全程Central Authentication Service&#xff08;中心认证服务&#xff09;&#xff0c;是一个单点登录协议&#xff0c;Apereo CAS是实现该协议的软件包。 单点登录定义 …

【面试】Android 大厂必问的8大模块,你掌握了几个?

自15年毕业进入社会从事 Android 开发行业&#xff0c;&#xff0c;已经将近有八年的时光了&#xff1b; 在这将近八年的时间内&#xff0c; 我从 小厂打杂到进入到核心团队&#xff0c;再跳槽到大厂&#xff1b; 在华为呆过一段时间&#xff0c;18年四月份进了阿里一直到现在&…

体态识别算法在 Android 端部署实例

背景介绍 随着软硬件技术的发展&#xff0c;智能穿戴式设备逐渐从概念走向商用化。在过去几年内&#xff0c;Google、Apple以及Sony等科技公司在体积、功耗控制以及成本等方面做得越来越好&#xff0c;推出了一大批可穿戴产品&#xff0c;具有代表性的成果有&#xff1a;1. 智能…

Cy5 Alkyne,1223357-57-0,花青素Cyanine5炔基用于点击化学标记反应

CAS号&#xff1a;1223357-57-0 | 英文名&#xff1a; Cyanine5 alkyne&#xff0c;Cy5 Alkyne | 中文名&#xff1a;花青素CY5炔基 CASNumber&#xff1a;1223357-57-0 Molecular formula&#xff1a;C35H42ClN3O Molecular weight&#xff1a;556.19 Purity&#xff1a;9…

【CNN】ResNet——开启的深度学习从1到无限可能的新时代

前言 深度残差网络&#xff08;Deep residual network, ResNet&#xff09;的提出是CNN图像史上的一件里程碑事件&#xff0c;ResNet在2015年发表当年取得了图像分类&#xff0c;检测等等5项大赛第一&#xff0c;并又一次刷新了CNN模型在ImageNet上的历史记录。直到今天&#…

《看漫画学Python》1、2版分享,python最佳入门教程,中学生用业余时间都能学会,北大教授看完都这样定义它

前言 学习Python的小伙伴大部分应该都知道《看漫画学Python&#xff1a;有趣、有料、好玩、好用&#xff08;全彩版&#xff09;》这本书&#xff01; 但是刚开始接触Python的朋友都会有一个共同的烦恼&#xff0c;自学好无聊&#xff0c;好枯燥&#xff0c;不想坚持了……所…

Ajax使用

简介&#xff1a; 全称:Asynchronous JavaScript And XML 中文名:异步js与XML 作用:网页使用JavaScript脚本实现前端与服务器的异步交互技术,可以在不刷新网页的前 提下实现和服务器的数据交互 注意:ajax不是一种编程语言&#xff0c;而是使用JS的一种技术。 使用步骤 步骤&am…

最佳镜像搬运工 Skopeo 指南

最佳镜像搬运工 Skopeo 指南 文章目录最佳镜像搬运工 Skopeo 指南1. 概述2. Skopeo 是如何工作的&#xff1f;3. 为什么要用 Skopeo&#xff1f;3.1 灵活性3.2 安全性和可访问性3.3 功能多样性4. 安装4.1 Fedora4.2 RHEL / CentOS Stream ≥ 84.3 RHEL/CentOS ≤ 7.x4.4 Ubuntu…

GPU显存占满但利用率却很低

来帕多瓦联培已经一个多月了&#xff0c;最近调代码跑实验又发现了这个问题。这里提供另外一个解决思路。一个原因还是 cpu没跟上gpu节奏。 通常我们都会用尽可能大的 batch 来占满显存。但是如果cpu的读取和传输跟不上的话就会导致gpu利用率时上时下&#xff0c;而且训练时间…

2022.3IDEA配置grep console

首先安装Grep Console (这个大家都会吧) 安装之后 打开File 选项的Setting→Other Settings→Grep Console 3. 打开之后默认的样式是下图&#xff08;我做了一下标识&#xff09; whole line:是否一整行都是这个样式。用于区分一个关键字和一行字case insensitive: 不勾选就行…

spring cache (ehcache方式)

目录前置pom: jar配置文件:ehcache.xmlapplication.ymlMyEhCacheCacheConfiguration.java效果图禁用 MyEhCacheCacheConfiguration.java启用 MyEhCacheCacheConfiguration.java前置 会演示springcache的使用方式 项目地址: https://gitee.com/xmaxm/test-code/blob/master/cha…

第五章 神经网络(上)

5.1 神经元模型 神经网络目前使用的最广泛的定义为“神经网络是由具有适应性的简单单元组成的广泛并行互联的网络&#xff0c;它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。神经网络中最基本的成分是神经元模型&#xff0c;即上述定义的简单单元。 在生物神经…

离线安装Redis集群(redis-6.2.4)

记录&#xff1a;326 场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;使用redis-6.2.4版本&#xff0c;在三台机器上&#xff0c;离线安装Redis集群。 版本&#xff1a; 操作系统&#xff1a;CentOS 7.9 Redis版本&#xff1a;redis-6.2.4 1.主机规划 目标&#xff…

物联网僵尸网络再次发起大规模攻击事件回顾

执行摘要 随着物联网的不断发展&#xff0c;物联网安全也被越来越多的人所关注。我们于 2016 年发布《物联网安全 白皮书》&#xff0c;进行物联网安全的科普介绍&#xff1b;于 2017 年发布《2017 物联网安全年报》&#xff0c;关注物联网资产 在互联网上的暴露情况、物联网设…