mq:增加 kafka、rocketmq、rabbitmq 的实现支持

This commit is contained in:
zhijiantianya@gmail.com
2023-11-01 19:58:56 +08:00
parent c066ea46f9
commit f8ed0e15f0
20 changed files with 645 additions and 14 deletions

View File

@ -1,7 +1,4 @@
/**
* TODO 芋艿:调整注释
* 消息队列,基于 Redis 提供:
* 1. 基于 Pub/Sub 实现广播消费
* 2. 基于 Stream 实现集群消费
* 消息队列,支持 Redis、RocketMQ、RabbitMQ、Kafka 四种
*/
package cn.iocoder.yudao.framework.mq;

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.framework.mq.rabbitmq.config;
import cn.hutool.core.util.ReflectUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.utils.SerializationUtils;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import java.lang.reflect.Field;
/**
* RabbitMQ 消息队列配置类
*
* @author 芋道源码
*/
@AutoConfiguration
@Slf4j
@ConditionalOnClass(name = "org.springframework.amqp.rabbit.core.RabbitTemplate")
public class YudaoRabbitMQAutoConfiguration {
static {
// 强制设置 SerializationUtils 的 TRUST_ALL 为 true避免 RabbitMQ Consumer 反序列化消息报错
// 为什么不通过设置 spring.amqp.deserialization.trust.all 呢?因为可能在 SerializationUtils static 初始化后
Field trustAllField = ReflectUtil.getField(SerializationUtils.class, "TRUST_ALL");
ReflectUtil.removeFinalModify(trustAllField);
ReflectUtil.setFieldValue(SerializationUtils.class, trustAllField, true);
}
}

View File

@ -0,0 +1,4 @@
/**
* 占位符,无特殊逻辑
*/
package cn.iocoder.yudao.framework.mq.rabbitmq.core;

View File

@ -0,0 +1,4 @@
/**
* 消息队列,基于 RabbitMQ 提供
*/
package cn.iocoder.yudao.framework.mq.rabbitmq;

View File

@ -1 +1,2 @@
cn.iocoder.yudao.framework.mq.redis.config.YudaoRedisMQAutoConfiguration
cn.iocoder.yudao.framework.mq.rabbitmq.config.YudaoRabbitMQAutoConfiguration