package com.ruoyi.jianguan.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 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; } }