Spring Boot学习笔记(十七)Spring Boot RabbitMQ基本使用以及Topic Exchange, Fanout Exchange -- 实战篇

本文详细介绍了Spring Boot集成RabbitMQ的基本使用,包括简单消息发送与接收、一对多消息、多对多消息、对象支持,以及Topic和Fanout Exchange的实战应用,展示了RabbitMQ的灵活性和在项目中的高效解耦能力。
摘要由CSDN通过智能技术生成

Spring Boot RabbitMQ基本使用以及Topic Exchange, Fanout Exchange – 实战篇

Github: IDEA Spring Boot RabbitMQ 消息队列

初始化项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
项目结构
在这里插入图片描述
在这里插入图片描述
测试一:RabbitMQ的简单使用

  • 初始化项目后,请自行搜索 win 10 rabbitMQ 安装

  • 安装完毕之后配置项目的 pom.xml, 其实就是添加以下依赖:

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

    pom.xml 完整文件:

    <?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.1.9.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>wen</groupId>
        <artifactId>rabbitmq</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>rabbitmq</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <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>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    
  • 接下来设置 项目目录 resources下的 application.properties 文件,配置 rabbitmq 的安装地址、端口及账户信息:

    spring.rabbitmq.host=127.0.0.1
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=guest
    spring.rabbitmq.password=guest
    
  • 定义队列 config包下 RabbitConfig.java, 测试一用到的队列是

        @Bean
        public Queue Queue() {
            return new Queue("hello");
        }
    

    RabbitConfig.java 完整代码:

    package wen.rabbitmq.config;
    
    import org.springframework.amqp.core.Queue;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class RabbitConfig {
    
        @Bean
        public Queue Queue() {
            return new Queue("hello");
        }
    
        @Bean
        public Queue StephanieQueue() {
            return new Queue("Stephanie");
        }
    
        @Bean
        public Queue objectQueue() {
            return new Queue("many to many");
        }
    
        @Bean
        public Queue UserQueue() {
            return new Queue("user");
        }
    }
    
    
  • 定义发送者, AmqpTemplate 是 Spring Boot 提供的默认实现:

    package wen.rabbitmq.oto.sender;
    
    import org.springframework.amqp.core.AmqpTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    
    @Component
    public class HelloSender {
    
        @Autowired
        private AmqpTemplate rabbitTemplate;
    
        public void send() {
            String context = "hello " + new Date();
            System.out.println("Hello Sender: " + context);
            this.rabbitTemplate.convertAndSend("hello", context);
        }
    }
    
    
  • 定义接收者,注意使用注解 @RabbitListener ,使用 queues 指明队列名称, @RabbitHandler 为具体接收的方法,注意,发送者和接收者的 queue name 必须一致,不然不能接收:

    package wen.rabbitmq.oto.receiver;
    
    import org.springframework.amqp.rabbit.annotation.RabbitHandler;
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.stereotype.Component;
    
    @Component
    @RabbitListener(queues = "hello")
    public class HelloReceiver {
    
        @RabbitHandler
        public void process(String hello) {
            System.out.println("Hello Receiver : " + hello);
        }
    
    }
    
    
  • 测试代码:

    package wen.rabbitmq;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    import wen.rabbitmq.fanout.send.FanoutSender;
    import wen.rabbitmq.model.User;
    import wen.rabbitmq.ntn.sender.SenderOne;
    import wen.rabbitmq.ntn.sender.SenderTwo;
    import wen.rabbitmq.object.sender.ObjectSender;
    import wen.ra
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值