SpringBoot集成常用第三方框架-RabbitMQ

这篇具有很好参考价值的文章主要介绍了SpringBoot集成常用第三方框架-RabbitMQ。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

一、RabbitMQ 概述

RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。

RabbitMQ官方地址:RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQ

RabbitMQ提供了6种模式:简单模式work模式Publish/Subscribe发布与订阅模式Routing路由模式Topics主题模式,==RPC远程调用模式==(远程调用,不太算MQ;暂不作介绍);

官网对应模式介绍:RabbitMQ Tutorials — RabbitMQ

SpringBoot集成常用第三方框架-RabbitMQ,环境搭建,spring boot,后端,java

1.1 RabbitMQ简介

AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP 规范发布。类比HTTP。

SpringBoot集成常用第三方框架-RabbitMQ,环境搭建,spring boot,后端,java

2007年,Rabbit 技术公司基于 AMQP 标准开发的 RabbitMQ 1.0 发布。RabbitMQ 采用 Erlang 语言开发。Erlang 语言由 Ericson 设计,专门为开发高并发和分布式系统的一种语言,在电信领域使用广泛。

RabbitMQ 基础架构如下图:

SpringBoot集成常用第三方框架-RabbitMQ,环境搭建,spring boot,后端,java

1.2 RabbitMQ 中的相关概念

Broker:接收和分发消息的应用,RabbitMQ Server就是 Message Broker

Virtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个vhost,每个用户在自己的 vhost 创建 exchange/queue 等 Connection:publisher/consumer 和 broker 之间的 TCP 连接

Channel:如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCP Connection的开销将是巨大的,效率也较低。Channel 是在 connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的 channel 进行通讯,AMQP method 包含了channel id 帮助客户端和message broker 识别 channel,所以 channel 之间是完全隔离的。Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销

Exchange:message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发消息到queue 中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)

Queue:消息最终被送到这里等待 consumer 取走

Binding:exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key。Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据

二、Spring Boot整合RabbitMQ

2.1. 整合RabbitMQ简介

在Spring项目中,可以使用Spring-Rabbit去操作RabbitMQ GitHub - spring-projects/spring-amqp: Spring AMQP - support for Spring programming model with AMQP, especially but not limited to RabbitMQ

尤其是在spring boot项目中只需要引入对应的amqp启动器依赖即可,方便的使用RabbitTemplate发送消息,使用注解接收消息。

一般在开发过程中

生产者工程:

  1. application.yml文件配置RabbitMQ相关信息;

  2. 在生产者工程中编写配置类,用于创建交换机和队列,并进行绑定

  3. 注入RabbitTemplate对象,通过RabbitTemplate对象发送消息到交换机

消费者工程:

  1. application.yml文件配置RabbitMQ相关信息

  2. 创建消息处理类,用于接收队列中的消息并进行处理

2.2. 搭建生产者工程

2.2.1. 创建工程

创建生产者工程springboot-rabbitmq-producer

2.2.2. 添加依赖

修改pom.xml文件内容为如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>
    <groupId>com.</groupId>
    <artifactId>springboot-rabbitmq-producer</artifactId>
    <version>1.0-SNAPSHOT</version>
​
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    </dependencies>
</project>

2.2.3. 启动类

package com..rabbitmq;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
​
@SpringBootApplication
public class ProducerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class);
    }
}
​

2.2.4 配置RabbitMQ

创建application.yml,内容如下:

spring:
  rabbitmq:
    host: 192.168.6.141
    port: 5672
    virtual-host: /
    username: guest
    password: guest

2.2.5 绑定交换机和队列

创建RabbitMQ队列与交换机绑定的配置类 RabbitMQConfig

​
@Configuration
public class RabbitMQConfig {
        public static final String EXCHANGE_NAME = "boot_topic_exchange";
        public static final String QUEUE_NAME = "boot_queue";
​
        // 1 交换机
        @Bean("bootExchange")
        public Exchange bootExchange(){
            return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
        }
        //2.Queue 队列
        @Bean("bootQueue")
        public Queue bootQueue(){
            return QueueBuilder.durable(QUEUE_NAME).build();
        }
        //3. 队列和交互机绑定关系 Binding
    /*
        1. 知道哪个队列
        2. 知道哪个交换机
        3. routing key
        noargs():表示不指定参数
     */
        @Bean
        public Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue,
                                         @Qualifier("bootExchange") Exchange exchange){
            return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
        }
}
​

2.2.5 运行测试

@SpringBootTest
class SpringbootRabbitmqProducerApplicationTests {
​
​
    @Autowired
    private RabbitTemplate rabbitTemplate;
​
    /**
     * 第一个参数:交换机名字
     * 第二个参数:routingKey
     * 第三个参数:发送的消息
     */
    @Test
    public void testSend(){
        rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"boot.haha","mq hello");
    }
​
}

2.3. 搭建消费者工程

2.3.1. 创建工程

创建消费者工程springboot-rabbitmq-consumer

2.3.2. 添加依赖

修改pom.xml文件内容为如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>
    <groupId>com.</groupId>
    <artifactId>springboot-rabbitmq-consumer</artifactId>
    <version>1.0-SNAPSHOT</version>
​
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
    </dependencies>
​
</project>

2.3.3. 启动类

package com..rabbitmq;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
​
@SpringBootApplication
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class);
    }
}

2.3.4. 配置RabbitMQ

创建application.yml,内容如下:

spring:
  rabbitmq:
    host: 192.168.6.141
    port: 5672
    virtual-host: /
    username: guest
    password: guest

2.3.5. 消息监听处理类

编写消息监听器com.huidian.rabbitmq.listener.MyListener

@Component
public class MyListener {
​
    /**
     * 监听某个队列的消息
     * @param message 接收到的消息
     */
    @RabbitListener(queues = "boot_queue")
    public void myListener1(String message){
        System.out.println("消费者接收到的消息为:" + message);
    }
}

2.3.6 测试

三,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

SpringBoot集成常用第三方框架-RabbitMQ,环境搭建,spring boot,后端,java

SpringBoot集成常用第三方框架-RabbitMQ,环境搭建,spring boot,后端,javaSpringBoot集成常用第三方框架-RabbitMQ,环境搭建,spring boot,后端,java

SpringBoot集成常用第三方框架-RabbitMQ,环境搭建,spring boot,后端,java

 SpringBoot集成常用第三方框架-RabbitMQ,环境搭建,spring boot,后端,javaSpringBoot集成常用第三方框架-RabbitMQ,环境搭建,spring boot,后端,java

SpringBoot集成常用第三方框架-RabbitMQ,环境搭建,spring boot,后端,java

 SpringBoot集成常用第三方框架-RabbitMQ,环境搭建,spring boot,后端,java文章来源地址https://www.toymoban.com/news/detail-796699.html

到了这里,关于SpringBoot集成常用第三方框架-RabbitMQ的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RK3568平台 TinyAlsa集成第三方音频算法

    ALSA(Advanced Linux Sound Architecture)是一个开源项目,涵盖了用户空间和内核空间对音频设备的操作接口,通过应用层使用alsalib可以实现对音频设备的控制         TinyAlsa是android推出的一个精简的ALSA库,当然alsa-driver这块没有改动         alsa包含:1、内核 alsa-driver 2.用户空间

    2024年01月23日
    浏览(56)
  • Android Pdf第三方框架

    导入AndroidPdfViewer 在 repositories 里面添加库 布局文件引用PDFView PdfViewer 为我们提供了以下几种读取文件的方法: Configurator 主要方法 PDFView 其他方法 github地址: https://github.com/barteksc/AndroidPdfViewer 导入mupdf 在 repositories 里面添加库 mupdf提供了解析代码, Document 读取pdf文件, Androi

    2024年02月13日
    浏览(69)
  • Flutter:第三方常用库整理

    随着Flutter的不断学习,接触了不少第三方的库。因此打算进行简单的整理。 简介 一个强大的Dart/FlutterHTTP客户端,支持全局配置, 拦截器、表单数据、请求取消、文件上传/下载、 超时和自定义适配器等。 官方地址 https://pub-web.flutter-io.cn/packages/dio 简单使用 flutter:网络请求

    2024年02月16日
    浏览(45)
  • Swift常用的第三方库

    以下是一些常用的Swift第三方库及其链接: Alamofire:用于网络请求的库。https://github.com/Alamofire/Alamofire Kingfisher:用于异步下载和缓存图片的库。https://github.com/onevcat/Kingfisher SwiftyJSON:用于处理JSON数据的库。https://github.com/SwiftyJSON/SwiftyJSON Realm:一个移动数据库。https://github.

    2024年04月28日
    浏览(43)
  • Java常用第三方工具类

    一、Apache StringUtils:专为Java字符串而生的工具类 首先引入依赖: 1.字符串判空 isEmpty: 判断null和\\\"\\\" isNotEmpty:判断null和\\\"\\\" isBlank:判断null和\\\"\\\"和\\\" \\\" isNotBlank:判断null和\\\"\\\"和\\\" \\\" 示例代码如下: 执行结果: 2.分割字符串 使用StringUtils的split()方法分割字符串成数组。 示例代码如下:

    2024年02月08日
    浏览(70)
  • JMeter进阶-常用第三方插件讲解

    准备工作: 1.最新版本的JMeter是默认不展示插件管理器的,所以我们需要手动添加插件管理器 2.下载地址:https://jmeter-plugins.org/install/Install/,下载插件plugins-manager.jar,然后将jar包放在apache-jmeter-x.x.xlibext路径下,重新打开jmeter客户端即可在“选项”下面可以看到了Plugins-Ma

    2023年04月08日
    浏览(49)
  • 吐血整理!Python常用第三方库,码住!!!

    Python作为一种编程语言近年来越来越受欢迎,它为什么这么火? 其中一个重要原因就是因为Python的库丰富——Python语言提供超过15万个第三方库,Python库之间广泛联系、逐层封装。几乎覆盖信息技术所有领域,下面简单介绍下数据分析与可视化、网络爬虫、自动化、WEB开发、

    2024年02月11日
    浏览(48)
  • Springboot整合第三方登录

    Springboot整合第三方登录 为什么采用第三方登录 ​ 采用第三方登录可以避免重新注册账号的繁琐,也不需要再为密码和昵称发愁,而第三方登录有一个比较好用的包,里面整合了多种第三方登录,开箱即用,非常方便。就是JustAuth,网址https://www.justauth.cn/。 整合第三方登录

    2024年02月09日
    浏览(45)
  • Xcode通过Add package自动集成第三方SDK问题汇总

    问题1:  解决方法:这个问题可能是因为 Adjust 或者 Facebook 的库当中依赖的某些类库的仓库地址是 git:// 协议,通过这种协议与 GitHub 通讯时会使用到你的 SSH 配置,你电脑上相关的 ssh key 使用了 GitHub 不再支持的格式,请参考提示中的网址重新生成相关的 SSH key:https://githu

    2024年02月13日
    浏览(52)
  • Spring xml 方式整合mybatis 第三方框架

    MyBatis提供了mybatis-spring.jar专门用于两大框架的整合。 ①:第一步: 导入MyBatis整合Spring的相关坐标; ②:第二步: 编写Mapper和Mapper.xml ③:第三步: 配置SqlSessionFactoryBean和MapperScannerConfigurer ④:第四步: 编写测试代码

    2024年02月13日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包