Browse Source

修改 rabbitmq 序列化方式,使用 Jackson2JsonMessageConverter 替代

YunaiV 11 months ago
parent
commit
1d239c9877

+ 9 - 10
yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/rabbitmq/config/YudaoRabbitMQAutoConfiguration.java

@@ -1,12 +1,11 @@
 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.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.MessageConverter;
 import org.springframework.boot.autoconfigure.AutoConfiguration;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-
-import java.lang.reflect.Field;
+import org.springframework.context.annotation.Bean;
 
 /**
  * RabbitMQ 消息队列配置类
@@ -18,12 +17,12 @@ import java.lang.reflect.Field;
 @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);
+    /**
+     * Jackson2JsonMessageConverter Bean:使用 jackson 序列化消息
+     */
+    @Bean
+    public MessageConverter createMessageConverter() {
+        return new Jackson2JsonMessageConverter();
     }
 
 }