RabbitMQ的springboot项目集成使用-01

简介: RabbitMQ的springboot项目集成使用-01

项目业务使用【发布订阅模式】
image.png
image.png
image.png
image.png
image.png
image.png
1.maven


org.springframework.amqp
spring-rabbit

————————————————

2.mq连接信息

MQ连接

rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
    #配置RabbitMq虚拟主机的路径(默认为“/" 可以省略)
    virtual-host: /

3.RabbitMQConfig
————————————————
package com.test.config;

import org.springframework.amqp.core.*;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**

  • MQ消息队列配置
  • 1.创建交换机
  • 2.创建队列
  • 3.将交换机与队列进行绑定
    *
  • @author wangwei
  • @date 2023-08-03 13:53:00
    /
    @Configuration
    public class RabbitMQConfig {
    /*

    • 定制json 格式的消息转换器
      */
      @Bean
      public MessageConverter messageConverter() {
      return new Jackson2JsonMessageConverter();
      }

      /*消息队列 对象

    • 1.创建名称为 fanout_queue_notify 的消息队列
    • 2.目前集成mq做 任务下发通知的消息队列
    • @return
      */
      @Bean
      public Queue fanoutQueryNotify() {
      return new Queue("fanout_queue_notify1");
      }

      /*

    • 交换机对象
    • 1.fanout创建一个交换机Channels
      */
      @Bean
      public FanoutExchange fanoutExchange() {
      //创建一个fanout模式的交换机(发布订阅模式)
      return new FanoutExchange("fanout_exchange1");
      }

      /*

    • 将创建的队列绑定到对应的交换机上
      */
      @Bean
      public Binding bindingNotify() {
      return BindingBuilder.bind(fanoutQueryNotify()).to(fanoutExchange());
      }

}

4.消息发送者
package com.ruoyi.config;

import org.springframework.amqp.core.*;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**

  • MQ消息队列配置
  • 1.创建交换机
  • 2.创建队列
  • 3.将交换机与队列进行绑定
    *
  • @author wangwei
  • @date 2023-08-03 13:53:00
    /
    @Configuration
    public class RabbitMQConfig {
    /*

    • 定制json 格式的消息转换器
      */
      @Bean
      public MessageConverter messageConverter() {
      return new Jackson2JsonMessageConverter();
      }

      /*消息队列 对象

    • 1.创建名称为 fanout_queue_notify 的消息队列
    • 2.目前集成mq做 任务下发通知的消息队列
    • @return
      */
      @Bean
      public Queue fanoutQueryNotify() {
      return new Queue("fanout_queue_notify1");
      }

      /*

    • 交换机对象
    • 1.fanout创建一个交换机Channels
      */
      @Bean
      public FanoutExchange fanoutExchange() {
      //创建一个fanout模式的交换机(发布订阅模式)
      return new FanoutExchange("fanout_exchange1");
      }

      /*

    • 将创建的队列绑定到对应的交换机上
      */
      @Bean
      public Binding bindingNotify() {
      return BindingBuilder.bind(fanoutQueryNotify()).to(fanoutExchange());
      }

}
5.消息消费者

package com.ruoyi.consumption;

import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;

/**

  • 消息消费者
  • @author wangwei
  • @date 2023-08-03 13:53:00
    */
    @Service
    public class MQConsumptionService {

    //发布订阅模式 @RabbitListener 可以指定当前方法监听哪一个队列
    @RabbitListener(queues = "fanout_queue_notify")
    public void subConsumptionNotify(Message message){

     //消息内容在消息队列里面是以  字节形式存放的
     byte[] body = message.getBody();
     String stringMsg = new String(body);
     //todo 待详细集成松江反诈  的具体业务,这里只是测试接收消息的案例
     System.out.printf("我是消息接受者/消费者,接收到的队列消息内容为:   =======》"+stringMsg);
    

    }
    }

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
20天前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
59 1
SpringBoot获取项目文件的绝对路径和相对路径
|
11天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
22 2
|
15天前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
36 8
|
1月前
|
消息中间件 Java 数据库
新版 Seata 集成 RocketMQ事务消息,越来越 牛X 了!阿里的 Seata , yyds !
这里 借助 Seata 集成 RocketMQ 事务消息的 新功能,介绍一下一个新遇到的面试题:如果如何实现 **强弱一致性 结合**的分布式事务?
新版 Seata 集成 RocketMQ事务消息,越来越 牛X 了!阿里的 Seata , yyds !
|
15天前
|
XML Java 数据库连接
SpringBoot集成Flowable:打造强大的工作流管理系统
在企业级应用开发中,工作流管理是一个核心组件,它能够帮助我们定义、执行和管理业务流程。Flowable是一个开源的工作流和业务流程管理(BPM)平台,它提供了强大的工作流引擎和建模工具。结合SpringBoot,我们可以快速构建一个高效、灵活的工作流管理系统。本文将探讨如何将Flowable集成到SpringBoot应用中,并展示其强大的功能。
58 1
|
1月前
|
JavaScript 前端开发 Java
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
这篇文章详细介绍了如何在前端Vue项目和后端Spring Boot项目中通过多种方式解决跨域问题。
355 1
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
|
22天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
41 2
|
22天前
|
前端开发 Java Spring
SpringBoot项目thymeleaf页面支持词条国际化切换
SpringBoot项目thymeleaf页面支持词条国际化切换
52 2
|
22天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
34 1
|
24天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
下一篇
无影云桌面