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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
17天前
|
API Java 监控
SpringBoot基于OpenAPI3的接口文档管理快速集成和使用
本文主要简单介绍SpringCloud2023中进行接口文档管理,方便前后端开发和文档维护。文档管理工具基于开源的knife4j封装的openapi3。
49 3
|
22小时前
|
消息中间件 Java Kafka
SpringBoot实用开发篇第六章(整合第三方技术,ActiveMQ,RabbitMQ,RocketMQ,Kafka)
SpringBoot实用开发篇第六章(整合第三方技术,ActiveMQ,RabbitMQ,RocketMQ,Kafka)
|
2天前
|
缓存 人工智能 监控
集成人工智能到Spring Boot项目
集成人工智能到Spring Boot项目
16 1
|
2天前
|
数据采集 人工智能 监控
Spring Boot项目中集成Spring AI(也就是Spring Artificial Intelligence)
Spring Boot项目中集成Spring AI(也就是Spring Artificial Intelligence)
18 1
|
5天前
|
Prometheus Cloud Native Java
springboot集成prometheus异常处理
springboot集成prometheus异常处理
16 2
|
6天前
|
XML Java 应用服务中间件
Tomcat项目创建 以及 在IDEA当中集成Tomcat
Tomcat项目创建 以及 在IDEA当中集成Tomcat
|
8天前
|
移动开发 前端开发 JavaScript
|
8天前
|
网络协议 JavaScript Java
|
12天前
|
Java Spring
解决Springboot集成ElasticSearch 报错:A bean with that name has already been defined in null and overriding
解决Springboot集成ElasticSearch 报错:A bean with that name has already been defined in null and overriding
|
15天前
|
搜索推荐 前端开发 JavaScript
SpringBoot静态资源访问控制和封装集成方案
该文档描述了对基于SpringBoot的项目框架进行优化和整合的过程。原先采用前后端分离,后端兼做前端,但随着项目增多,升级维护变得复杂。因此,决定整合后台管理页面与后端代码,统一发布。设计上,框架包含后台管理资源,项目则配置具体业务页面,项目可通过覆盖框架资源实现个性化。关键步骤包括:自定义静态资源访问路径、解决图标与字体文件访问问题、设定自定义欢迎页面和页面图标,以及确保项目能正确访问框架静态资源。通过扫描jar包、解压和拷贝资源到项目目录,实现了框架静态资源的动态加载。此外,调整静态资源访问优先级,保证正确加载。最终实现支持jar和war包的项目结构优化。
50 4