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<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; }
|
|
}
|