| package com.ruoyi.integration.rocket.configuration; | 
|   | 
| import org.springframework.messaging.converter.*; | 
| import org.springframework.util.ClassUtils; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.List; | 
|   | 
| public class RocketMQMessageConverter { | 
|   | 
|     private static final boolean JACKSON_PRESENT; | 
|     private static final boolean FASTJSON_PRESENT; | 
|   | 
|     static { | 
|         ClassLoader classLoader = RocketMQMessageConverter.class.getClassLoader(); | 
|         JACKSON_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson,databind.ObjectMapper", classLoader) | 
|                 && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader); | 
|         FASTJSON_PRESENT = ClassUtils.isPresent("com.alibaba.fastjson.JSON", classLoader) | 
|                 && ClassUtils.isPresent("com.alibaba.fastjson.support.config.FastJsonConfig", classLoader); | 
|     } | 
|     private final CompositeMessageConverter messageConverter; | 
|   | 
|     public RocketMQMessageConverter(){ | 
|         List<MessageConverter> messageConverters = new ArrayList<>(); | 
|         ByteArrayMessageConverter byteArrayMessageConverter = new ByteArrayMessageConverter(); | 
|         byteArrayMessageConverter.setContentTypeResolver(null); | 
|         messageConverters.add(byteArrayMessageConverter); | 
|         messageConverters.add(new StringMessageConverter()); | 
|         if (JACKSON_PRESENT) { | 
|             messageConverters.add(new MappingJackson2MessageConverter()); | 
|         } | 
|         if(FASTJSON_PRESENT) { | 
|             try { | 
|                 messageConverters.add( | 
|                         (MessageConverter) ClassUtils.forName( | 
|                                 "com.alibaba.fastjson.support.spring.messaging.MappingFastJsonMessageConverter", ClassUtils.getDefaultClassLoader()).newInstance()); | 
|             } catch (ClassNotFoundException | IllegalAccessException | InstantiationException ignored) { | 
|   | 
|             } | 
|         } | 
|         messageConverter = new CompositeMessageConverter(messageConverters); | 
|     } | 
|   | 
|     public MessageConverter getMessageConverter(){ return messageConverter; } | 
|   | 
| } |