Springboot 实践(13)spring boot 整合RabbitMq

前文讲解了RabbitMQ的下载和安装,此文讲解springboot整合RabbitMq实现消息的发送和消费。

1、创建web project项目,名称为“SpringbootAction-RabbitMQ”

2、修改pom.xml文件,添加amqp使用jar包

   <!--  RabbitMQ -->

        <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>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>org.springframework.amqp</groupId>

            <artifactId>spring-rabbit-test</artifactId>

            <scope>test</scope>

        </dependency>

3、修改application.xml,配置服务器RabbitMQ服务器

spring:  

  rabbitmq:  #配置RabbitMQ

    host: 127.0.0.1

    port: 5672

    username: guest

    password: guest

    virtual-host: /

4、添加RabbitMQ配置文件

@Configuration//Rabbit配置类

public class RabbitConfig {

        private final String EXCHANGE_NAME = "boot_topic_exchange";

        private final String QUEUE_NAME = "boot_queue";

    //创建交换机

  @Bean("bootExchange")

  public Exchange getExchange()

    {

        return ExchangeBuilder

                .topicExchange(EXCHANGE_NAME)//交换机类型 ;参数为名字

                .durable(true)//是否持久化,true即存到磁盘,false只在内存上

                .build();

    }

    //创建队列

    @Bean("bootQueue")

    public Queue getMessageQueue()

    {

        return new Queue(QUEUE_NAME);

    }

    //交换机绑定队列

    @Bean

    //@Qualifier注解,使用名称装配进行使用

    public Binding bindMessageQueue(@Qualifier("bootExchange") Exchange exchange, @Qualifier("bootQueue") Queue queue)

    {

        return BindingBuilder

                .bind(queue)

                .to(exchange)

                .with("#.message.#")

                .noargs();

    }

}

5、添加producer生产者文件

@RestController

public class TestProducer {

    //注入RabbitTemplate工具类(rabbit内部的,可以发送消息)

    @Autowired

    private RabbitTemplate rabbitTemplate;

    @GetMapping("/sendMessage")

    public void testSendMessage()

    {

        /**

         * 发送消息

         * 参数1:交换机

         * 参数2:路由键

         * 参数3:要发送的消息

         */

        rabbitTemplate.convertAndSend("boot_topic_exchange","message","双十二开始了!");

    }

}

6、添加consumer消费者文件

//消费者

@Component

public class Consumer {

  //监听队列

  @RabbitListener(queues = "boot_queue")

  public void listenMessage(Message message)

  {

      System.out.println("接收消息:"+message);

  }

}

7、测试

启动RabbitMQ服务器,启动后界面如下图所示:

启动SpringbootAction-RabbitMQ项目,项目启动后,在浏览器中输入http://localhost:2885/swagger-ui.html,界面如下:

测试消息生产者和消费者

选择“test-producer”,点击“Excute”,执行producer

观察项目后台console,显示如下:

从上图看,producer可以正常发布信息,同时consumer也正常消费了信息。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 中 Pivot 与 Center,重置模型物体的轴心为中心

文章目录 1. 概念2. 动态计算正确的模型中心点Center3. 重置模型物体的轴心为中心 1. 概念 在 Unity 面板的左上角有两个按钮&#xff0c;在本文中主要研究 Pivot/Center Pivot&#xff08;轴心&#xff09;&#xff1a;模型的真实位置&#xff0c;是由建模软件设定的可在模…

哈夫曼编码实现文件的压缩和解压

程序示例精选 哈夫曼编码实现文件的压缩和解压 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《哈夫曼编码实现文件的压缩和解压》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0…

签到系统怎么设计

背景 相信签到系统大家都有接触过&#xff0c;更多的是使用。但是有思考过这种系统是怎么设计的吗&#xff1f;比方说我统计一下每个月中每天的签到情况&#xff0c;怎么设计呢&#xff1f;今天一篇文章告诉你。 首先&#xff0c;我们熟悉的思维是&#xff1a;我设计一个数据…

MySQL主从复制和读写分离搭建

目录 一、主从复制原理 1、MySql支持从复制类型 2、主从复制的原理⭐⭐⭐ 4、mysql主从复制延迟 异步、同步、半同步复制&#xff1a; 二、主从复制实验 1、mysql 时间同步 1.1 主服务设置被同步的时间 1.2 两台从服务器设置时间同步&#xff08;两台服务器一样配置&am…

VSCode 配置 C 语言编程环境

目录 一、下载 mingw64 二、配置环境变量 三、三个配置文件 四、格式化代码 1、安装插件 2、保存时自动格式化 3、左 { 不换行 上了两年大学&#xff0c;都还没花心思去搭建 C 语言编程环境&#xff0c;惭愧&#xff0c;惭愧。 一、下载 mingw64 mingw64 是著名的 C/C…

练习2:88. 合并两个有序数组

这里写自定义目录标题 题目解体思路代码 题目 给你两个按非递减顺序排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m和 n &#xff0c;分别表示 nums1 和 nums2中的元素数目。 请你合并nums2 到 nums1 中&#xff0c;使合并后的数组同样按非递减顺序排列。 注意&a…

JVM类加载器

一、类与类加载器 类加载器虽然只用于实现类的加载动作&#xff0c;但它在Java程序中起到的作用却远超类加载阶段。对于 任意一个类&#xff0c;都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性&#xff0c;每一个类加载器&#xff0c;都拥有一个独…

骨传导耳机危害有哪些?骨传导耳机值得入手吗?

事实上&#xff0c;只要是正常使用&#xff0c;骨传导耳机并不会对身体造成伤害&#xff0c;并且在众多耳机种类中&#xff0c;骨传导耳机可以说是相对健康的一种耳机&#xff0c;这种耳机最独特的地方便是声波不经过外耳道和鼓膜&#xff0c; 而是直接将人体骨骼结构作为传声介…

Django(10)-项目实战-对发布会管理系统进行测试并获取测试覆盖率

在发布会签到系统中使用django开发了发布会签到系统, 本文对该系统进行测试。 django.test django.test是Django框架中的一个模块,提供了用于编写和运行测试的工具和类。 django.test模块包含了一些用于测试的类和函数,如: TestCase:这是一个基类,用于编写Django测试用…

【Spring】SpringBoot的10个参数验证技巧

这里写目录标题 前言1.使用验证注解2 使用自定义验证注解3 在服务器端验证4 提供有意义的错误信息5 将 i18n 用于错误消息messages.properties6 使用分组验证7 对复杂逻辑使用跨域验证8 对验证错误使用异常处理9 测试你的验证逻辑10 考虑客户端验证总结 前言 参数验证很重要&am…

webpack实战:某网站JS逆向分析

文章目录 1. 写在前面2. 抓包分析3. 扣加密代码 1. 写在前面 好的逆向能够帮助我们了解加密实现&#xff0c;然后根据加密方式&#xff08;md5,base64,res,des,rsa…)还原加密算法的过程。可以看看我之前的这篇文章&#xff1a;快速定位查找加密方式特征与技巧 目标站点&#…

利用python制作AI图片优化工具

将模糊图片4K高清化效果如下&#xff1a; 优化前的图片 优化后如下图&#xff1a; 优化后图片变大变清晰了效果很明显 软件界面如下&#xff1a; 所用工具和代码&#xff1a; 1、所需软件包 网盘链接&#xff1a;https://pan.baidu.com/s/1CMvn4Y7edDTR4COfu4FviA提取码&…