RabbitMQ(二)spring boot学习第二十四篇:Spring Boot集成RabbitMQ

1、加依赖

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hmblogs</groupId>
    <artifactId>rabbitmqDemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>rabbitmqDemo</name>
    <description>hmblogs</description>
    <properties>
        <java.version>8</java.version>
        <druid.version>1.2.8</druid.version>
        <log4jdbc.version>1.16</log4jdbc.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

        <!-- druid数据源驱动 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- mybatis -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>


        <!--Mysql依赖包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!--lombok插件-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!--监控sql日志-->
        <dependency>
            <groupId>org.bgee.log4jdbc-log4j2</groupId>
            <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
            <version>${log4jdbc.version}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.9</version>
        </dependency>

        <!--        spring需要依赖日志文件-->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2、加配置

复制代码
server:
  port: 8081
  servlet.context-path: /rabbitmqDemo
spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
  datasource:
    druid:
      db-type: com.alibaba.druid.pool.DruidDataSource
      driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
      url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hmblogs}?useSSL=true&allowPublicKeyRetrieval=true&serverTimezone=UTC
      username: ${DB_USER:root}
      password: ${DB_PWD:123456}
#  data:
#    mongodb:
#      host: 43.138.0.199
#      port: 27017
#      username: hmblogs
#      password: Woaihm13141314!
#      database: hmblogs
#      authentication-database: admin
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB

3、发送消息、

复制代码
package com.hmblogs.backend.util.rabbitmq;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MessageSender {


    @Autowired
    private AmqpTemplate rabbitTemplate;

    public void sendMessage(String message) {

        rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME, RabbitMQConfig.ROUTING_KEY, message);
        System.out.println("消息发送成功:" + message);
    }
}

写个controller类发送消息

复制代码
package com.hmblogs.backend.controller;

import com.hmblogs.backend.util.rabbitmq.MessageSender;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Autowired
    private MessageSender messageSender;


    @GetMapping("/testMq")
    public void testMq() {
        messageSender.sendMessage("Hello RabbitMQ!");
    }

}

会用到如下配置类

复制代码
package com.hmblogs.backend.util.rabbitmq;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitMQConfig {


    public static final String EXCHANGE_NAME = "juwatech.exchange";
    public static final String QUEUE_NAME = "juwatech.queue";
    public static final String ROUTING_KEY = "juwatech.key";

    @Bean
    public Queue queue() {

        return new Queue(QUEUE_NAME, true);
    }

    @Bean
    public DirectExchange exchange() {

        return new DirectExchange(EXCHANGE_NAME);
    }

    @Bean
    public Binding binding(Queue queue, DirectExchange exchange) {

        return BindingBuilder.bind(queue).to(exchange).with(ROUTING_KEY);
    }
}

4、接收消息

复制代码
package com.hmblogs.backend.util.rabbitmq;

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class MessageReceiver {


    @RabbitListener(queues = RabbitMQConfig.QUEUE_NAME)
    public void receiveMessage(String message) {

        System.out.println("收到消息:" + message);
        // 处理消息的业务逻辑
    }
}

5、调用接口

访问http://localhost:8081/rabbitmqDemo/testMq

就行。

6、查看Idea控制台,如下:

7、查看rabbitmq控制台,发现给我自动新建了对应的exchange和queue。

相关推荐
z***75151 小时前
Spring Boot 中 RabbitMQ 的使用
spring boot·rabbitmq·java-rabbitmq
l***46682 小时前
RabbitMQ 集群部署方案
分布式·rabbitmq·ruby
veminhe2 小时前
RabbitMQ(一)安装与基本使用
rabbitmq
2501_9416649610 小时前
基于边缘计算的智能视频分析系统设计
rabbitmq
2501_9418705611 小时前
分布式AI训练框架设计与多语言实现实践指南
rabbitmq
q***656912 小时前
使用 Docker 部署 RabbitMQ 的详细指南
docker·容器·rabbitmq
i***586712 小时前
【RabbitMQ】超详细Windows系统下RabbitMQ的安装配置
windows·分布式·rabbitmq
2501_9411481512 小时前
跨语言分布式AI平台建设与实践:Python、Java、C++、Go深度探索
kafka·rabbitmq
JSON_L19 小时前
Fastadmin中使用rabbitmq实现延迟队列
rabbitmq·php·fastadmin