栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RabbitMQ入门6:Spring Boot整合RabbitMQ;(入门级演示)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RabbitMQ入门6:Spring Boot整合RabbitMQ;(入门级演示)

说明:

(1)本篇博客的内容:在Spring Boot项目中使用RabbitMQ;

(2)本篇博客的内容,虽然略显呆板,不贴合实际开发;;;但,自己感觉到,只要对本篇博客的内容清楚明白,稍微调整就能在实际项目中初步使用RabbitMQ;

目录

零:前期准备:创建两个Spring Boot项目,分别充当Producer和Consumer;

1.创建【spring-boot-rabbitmq-producer】项目,充当Producer;

2.创建【spring-boot-rabbitmq-consumer】项目,充当Consumer; 

一:基于【spring-boot-rabbitmq-producer】项目,整合RabbitMQ,开发Producer;

1.在pom.xml中,引入RabbitMQ依赖; 

2.在application.properties中,配置RabbitMQ;

3.创建TopicRabbitConfig类,使用【使用Java Config方式实现Spring IoC】的方式,实例化两个队列(Queue)、一个交换机(Exchange),队列绑定到交换机(Binding);

4.创建MsgSender类,编写发送消息的逻辑方法;

5.为了能够发送消息,我们编写SpringBootRabbitmqProducerApplicationTests测试类,调用MsgSender类中编写的发送消息的逻辑方法;

 二:基于【spring-boot-rabbitmq-consumer】项目,整合RabbitMQ,开发Consumer;

1.在pom.xml中,引入RabbitMQ依赖; 

2.在application.properties中,配置RabbitMQ;

3.创建Receive1类和Receive2类,去演示接收消息;

(1)Receive1类;

(2)Receive2类;

(3)@RabbitListener和@RabbitHandler注解简介;

三:运行效果;

1.首先,运行producer项目的test类,去创建队列,创建交换机,建立连接,发送消息;

2.然后,运行consumer项目,去接收消息;


零:前期准备:创建两个Spring Boot项目,分别充当Producer和Consumer;

关于Spring Boot项目的创建,可以参考 

          ● 【Spring Boot入门三:创建Spring Boot项目;(包括【Spring 官网start.spring.io】方式,【IDEA集成的Spring Initializr】方式)】;

          ● 【Spring Boot电商项目8:数据库设计与项目初始化三:创建Spring Boot项目;】;

1.创建【spring-boot-rabbitmq-producer】项目,充当Producer;

2.创建【spring-boot-rabbitmq-consumer】项目,充当Consumer; 


一:基于【spring-boot-rabbitmq-producer】项目,整合RabbitMQ,开发Producer;

声明:这儿的内容,为了演示在Spring Boot中使用RabbitMQ,可能会显得死板、僵化、过于工整、啰嗦;只要我们心里能明白这个过程,在实际开发中,可以根据当前业务和项目的需求,灵活的使用;;;自然,究竟如何在实际的项目中,比较规范的、贴合实际的使用RabbitMQ,还需要积累和总结;

1.在pom.xml中,引入RabbitMQ依赖; 

        
            org.springframework.boot
            spring-boot-starter-amqp
        

2.在application.properties中,配置RabbitMQ;
server.port=8080
spring.application.name=producer


#配置RabbitMQ的地址和端口号;用户名和密码;虚拟机;
spring.rabbitmq.addresses=1**.***.***.**8:5672
#配置用户名和密码;
spring.rabbitmq.username=admin
spring.rabbitmq.password=password
#虚拟机使用默认的/
spring.rabbitmq.virtual-host=/
#配置连接的超时时间
spring.rabbitmq.connection-timeout=15000

说明:

(1) 能够感受到,Spring Boot为了能够支持RabbitMQ,为了能让用户在Spring Boot项目中比较方便的使用RabbitMQ,背后还是做了很多支撑的;

3.创建TopicRabbitConfig类,使用【使用Java Config方式实现Spring IoC】的方式,实例化两个队列(Queue)、一个交换机(Exchange),队列绑定到交换机(Binding);

TopicRabbitConfig类:

package com.imooc.springbootrabbitmqproducer;

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



@Configuration
public class TopicRabbitConfig {

    //首先,定义两个队列,queue1和queue2;
    @Bean
    public Queue queue1() {
        return new Queue("queue1");
    }
    @Bean
    public Queue queue2() {
        return new Queue("queue2");
    }

    //然后,定义一个交换机
    @Bean
    TopicExchange exchange() {
        return new TopicExchange("bootExchange");
    }

    //然后,把队列绑定到交换机上去;
    @Bean
    Binding bindingExchangeMessage1(Queue queue1, TopicExchange exchange) {
        return BindingBuilder.bind(queue1).to(exchange).with("dog.red");
    }
    @Bean
    Binding bindingExchangeMessage2(Queue queue2, TopicExchange exchange) {
        return BindingBuilder.bind(queue2).to(exchange).with("dog.#");
    }


}

说明:

(1)Spring Boot为了能够更好的让用户使用RabbitMQ,其会把连接RabbitMQ中需要用到的队列,交换机等,使用IoC容器管理起来;(虽然,其深入的内容不了解,但目前是可以这样理解的);

(2)这儿使用的是【使用Java Config方式实现Spring IoC】的方式,来实例化对象的;如有需要可以参考【Spring IoC容器与Bean管理25:使用Java Config方式实现Spring IoC一:对象实例化;(@Configuration,@Bean)】;

(3)类内容说明;

4.创建MsgSender类,编写发送消息的逻辑方法;

MsgSender类:

package com.imooc.springbootrabbitmqproducer;

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


@Component
public class MsgSender {
    @Autowired
    private AmqpTemplate rabbitmqTemplate;

    //发送一个消息
    public void send1() {
        String message = "This message 1 and routing key is dog.red";
        System.out.println("发送了" + message);
        this.rabbitmqTemplate.convertAndSend("bootExchange", "dog.red", message);
    }

    //再发送一个消息
    public void send2() {
        String message = "This message 2 and routing key is dog.black";
        System.out.println("发送了" + message);
        this.rabbitmqTemplate.convertAndSend("bootExchange", "dog.black", message);
    }
}

说明:

(1)这儿需要引入AmqpTemplate这个工具类,然后利用这个工具类去发送消息;

(2)基于topic模式的交换机的特点,根据我们设置的Routing Key,可以发现下面的情况;

5.为了能够发送消息,我们编写SpringBootRabbitmqProducerApplicationTests测试类,调用MsgSender类中编写的发送消息的逻辑方法;


 二:基于【spring-boot-rabbitmq-consumer】项目,整合RabbitMQ,开发Consumer;

声明:这儿的内容,为了演示在Spring Boot中使用RabbitMQ,可能会显得死板、僵化、过于工整、啰嗦;只要我们心里能明白这个过程,在实际开发中,可以根据当前业务和项目的需求,灵活的使用;;;自然,究竟如何在实际的项目中,比较规范的、贴合实际的使用RabbitMQ,还需要积累和总结;

1.在pom.xml中,引入RabbitMQ依赖; 

        
            org.springframework.boot
            spring-boot-starter-amqp
        
2.在application.properties中,配置RabbitMQ;
server.port=8081
spring.application.name=consumer


#配置RabbitMQ的地址和端口号;用户名和密码;虚拟机;
spring.rabbitmq.addresses=1**.***.***.**8:5672
#配置用户名和密码;
spring.rabbitmq.username=admin
spring.rabbitmq.password=password
#虚拟机使用默认的/
spring.rabbitmq.virtual-host=/
#配置连接的超时时间
spring.rabbitmq.connection-timeout=15000

说明:

(1) 能够感受到,Spring Boot为了能够支持RabbitMQ,为了能让用户在Spring Boot项目中比较方便的使用RabbitMQ,背后还是做了很多支撑的;

(2)因为,为了演示,我们会在本机开启两个Spring Boot项目,所以这个项目的端口号设置为了8081;

3.创建Receive1类和Receive2类,去演示接收消息;

(1)Receive1类;
package com.imooc.springbootrabbitmqconsumer;

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


@Component
@RabbitListener(queues = "queue1")
public class Receiver1 {

    @RabbitHandler
    public void process(String message) {
        System.out.println("Receiver1收到了:" + message);
    }
}

说明:

(1)使用@RabbitListener和@RabbitHandler来,帮助接收和处理消息;

……………………………………………………

(2)Receive2类;
package com.imooc.springbootrabbitmqconsumer;

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


@Component
@RabbitListener(queues = "queue2")
public class Receiver2 {

    @RabbitHandler
    public void process(String message) {
        System.out.println("Receiver2收到了:" + message);
    }
}

……………………………………………………

(3)@RabbitListener和@RabbitHandler注解简介;

例如:当发送map类型时,使用参数是Map类型的process()方法进行处理;


三:运行效果;

1.首先,运行producer项目的test类,去创建队列,创建交换机,建立连接,发送消息;

通过RabbitMQ的管理后台,可以看到交换机和队列都创建了;

2.然后,运行consumer项目,去接收消息;

发现结果符合预期;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877228.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号