RabbitMQ 学习记录(二):Springboot2.X整合Rabbitmq(1)
程序员文章站
2022-03-07 11:26:56
一、版本说明1、Springboot版本:2.4.02、Rabbitmq版本:3.8.9二、Springboot整合Rabbitmq1、项目整体结构2、POM文件
一、版本说明
1、Springboot版本:2.4.0
2、Rabbitmq版本:3.8.9
二、Springboot整合Rabbitmq
1、项目整体结构
2、POM文件
<?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.4.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cmxy</groupId>
<artifactId>learn-rabbit</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>learn-rabbit</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-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3、配置文件,配置非常简单,理论上可以都不用配置因为Springboot已经给定了默认值
##配置Rabbitmq
spring:
rabbitmq:
addresses: 127.0.0.1
port: 5672
##配置虚拟机
virtual-host: /
##消息开启手动确认
listener:
direct:
acknowledge-mode: manual
4、实现生产/消费消息
根据Rabbitmq官网介绍总共有7种工作模式,分别是
(1)简单工作模式(即一个生产者对应一个消费者,这种模式相对来说在实际中用的比较少)
(2)工作队列(即一个生产者对应多个消费者)
代码实现:
1、首先在Rabbitmq的配置类里声明一个工作队列
package com.cmxy.learnrabbit.config;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 该类用于配置Rabbitmq相关信息
*/
@Configuration
public class RabbitmqConfig {
/*Work模型即:一个生产者对应多个消费者*/
//声明一个Work模型队列
@Bean
public Queue workQueue() {
return new Queue("queue_work");
}
}
2、定义两个消费者(也可以是一个或多个)
@Component
public class WorkReceiveListener {
/**
*
* @param msg 发送的消息
* @param channel 通道信息
* @param message 附加的参数信息
*/
//当前消费者绑定名称为queue_work的队列
@RabbitListener(queues = "queue_work")
public void receiveMessage(String msg, Channel channel, Message message) {
// 只包含发送的消息
System.out.println("1接收到消息:" + msg);
}
@RabbitListener(queues = "queue_work")
public void receiveMessage2(Object obj, Channel channel, Message message) {
// 包含所有的信息
System.out.println("2接收到消息:" + obj);
}
}
3、使用RabbitTemplate生产消息
@Autowired
private RabbitTemplate rabbitTemplate;
/**
* 通过Work模型队列发送消息
*/
@Override
public void sendWorkMessage() {
System.out.println("生产者开始生产消息....");
for (int i = 0; i < 10; i++) {
rabbitTemplate.convertAndSend("queue_work", "测试work模型" + i);
}
System.out.println("生产者结束生产");
}
4、结果如下
5、未完待续。
参考文章:
https://blog.csdn.net/fan521dan/article/details/104912794
https://www.rabbitmq.com/getstarted.html
本文地址:https://blog.csdn.net/weixin_37624903/article/details/110874584
上一篇: 关于芯片的一些总结
下一篇: PS怎么制作一个弧形的文字路径?