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
相关文章
|
1月前
|
JavaScript 前端开发
如何在项目中集成 Babel?
如何在项目中集成 Babel?
37 3
|
8天前
|
消息中间件 存储 监控
说说MQ在你项目中的应用(一)
本文总结了消息队列(MQ)在项目中的应用,主要围绕异步处理、系统解耦和流量削峰三大功能展开。通过分析短信通知和业务日志两个典型场景,介绍了MQ的实现方式及其优势。短信通知中,MQ用于异步发送短信并处理状态更新;业务日志中,Kafka作为高吞吐量的消息系统,负责收集和传输系统及用户行为日志,确保数据的可靠性和高效处理。MQ不仅提高了系统的灵活性和响应速度,还提供了重试机制和状态追踪等功能,保障了业务的稳定运行。
41 6
|
26天前
|
XML Java API
Spring Boot集成MinIO
本文介绍了如何在Spring Boot项目中集成MinIO,一个高性能的分布式对象存储服务。主要步骤包括:引入MinIO依赖、配置MinIO属性、创建MinIO配置类和服务类、使用服务类实现文件上传和下载功能,以及运行应用进行测试。通过这些步骤,可以轻松地在项目中使用MinIO的对象存储功能。
|
27天前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
32 6
|
28天前
|
消息中间件 Java Kafka
什么是Apache Kafka?如何将其与Spring Boot集成?
什么是Apache Kafka?如何将其与Spring Boot集成?
66 5
|
1月前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
107 1
SpringBoot获取项目文件的绝对路径和相对路径
|
8天前
|
消息中间件 存储 中间件
说说MQ在你项目中的应用(二)商品支付
本文总结了消息队列(MQ)在支付订单业务中的应用,重点分析了RabbitMQ的优势。通过异步处理、系统解耦和流量削峰等功能,RabbitMQ确保了支付流程的高效与稳定。具体场景包括用户下单、支付请求、商品生产和物流配送等环节。相比Kafka,RabbitMQ在低吞吐量、高实时性需求下表现更优,提供了更低延迟和更高的可靠性。
21 0
|
1月前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
44 1
|
1月前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
57 8
|
1月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
45 2