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

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.lryc.cn/news/155448.html

相关文章:

  • YoloV8改进策略:轻量级Slim Neck打造极致的YoloV8
  • 使用java代码给Excel加水印,代码全,进阶版
  • day37:网编day4,多点通信和并发服务器
  • STM32 硬件IIC 控制OLED I2C卡死问题
  • Redis图文指南
  • C++17 std::string_view介绍与使用
  • 写得了代码,焊得了板!嵌入式开发工程师必修之代码管理方案(下)
  • Matlab论文插图绘制模板第110期—水平双向柱状图
  • 【广州华锐互动】VR全景工厂虚拟导览,虚拟现实技术提升企业数字化信息管理水平
  • idea 创建mybatis xml文件时找不到
  • Python钢筋混凝土结构计算.pdf-混凝土构件计算
  • mysql5.7-基于docker-compose搭建主从同步
  • 【USRP】调制解调系列5:16QAM、32QAM、64QAM、256QAM、1024QAM、基于labview的实现
  • Odoo|5分钟创建自定义的业务系统唯一序列号
  • mysql索引为什么提高查询速度(底层原理)
  • 算法通关村——位运算在查找重复元素中的妙用
  • 使用环境中的视觉地标和扩展卡尔曼滤波器定位移动机器人研究(Matlab代码实现)
  • 【python基础知识】5.for循环和while循环
  • STM32CUBEMX_创建时间片轮询架构的软件框架
  • vue 插槽Slots
  • 论文阅读《Nougat:Neural Optical Understanding for Academic Documents》
  • 较难的换根dp:P6213 「SWTR-04」Collecting Coins
  • Springboot - 15.二级分布式缓存集成-Caffeine
  • 二叉树的介绍及二叉树的链式结构的实现(C语言版)
  • 不同写法的性能差异
  • Bytebase 2.7.0 - ​新增分支(Branching)功能
  • day55 动规.p15 子序列
  • TypeScript DOM类型的声明
  • springboot找不到注册的bean
  • MEMS传感器的原理与构造——单片式硅陀螺仪