概念 : MQ在Java中是构建分布式系统的关键组件,通过异步、解耦和流量控制优化系统性能
MQ有什么应用场景?
- 异步处理
- 解耦
- 流量削峰
常用的MQ--RabbitMQ
搭建环境 :
父类依赖 :
<!--AMQP依赖,包含RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
微服务依赖 :
<!--统一配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--加载bootstrap-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
java版本为11
消息的发送和消费的配置都需要添加 :
spring:
rabbitmq:
host: 192.168.101.68 # 你的虚拟机IP
port: 5672 # 端口
virtual-host: / # 虚拟主机
username: itheima # 用户名
password: 123321 # 密码
工作模式
普通模式 :
工作队列模式 :
能者多劳
发布订阅者模式 :
Direct模式-配置形式声明队列交换机绑定关系
- 声明队列
- 声明交换机
- 绑定关系
Topic模式-注解形式 :
消息转换器
配置JSON转换器
引入父依赖 :
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.9.10</version>
</dependency>
配置消息转换器 :
package com.itheima.consumer.config;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author Mr.M
* @version 1.0
* @description mq配置类
* @date 2024/8/13 19:28
*/
@Configuration
public class MesaageConfig {
@Bean
public MessageConverter messageConverter() {
// 定义消息转换器
Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter();
//设置消息id,自动生成一个id,可用于消息幂等性处理
jackson2JsonMessageConverter.setCreateMessageIds(true);
return jackson2JsonMessageConverter;
}
}