package com.moral.util;
|
|
import java.io.UnsupportedEncodingException;
|
import java.util.Map;
|
|
import org.springframework.amqp.core.Message;
|
import org.springframework.amqp.core.MessageProperties;
|
import org.springframework.amqp.support.converter.AbstractMessageConverter;
|
import org.springframework.amqp.support.converter.MessageConversionException;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.TypeReference;
|
|
public class MessageConverter extends AbstractMessageConverter {
|
|
public static final String DEFAULT_CHARSET = "UTF-8";
|
|
@Override
|
protected Message createMessage(Object objectToConvert, MessageProperties messageProperties) throws MessageConversionException {
|
byte[] bytes = null;
|
try {
|
String jsonString = JSON.toJSONString(objectToConvert);
|
bytes = jsonString.getBytes(DEFAULT_CHARSET);
|
} catch (UnsupportedEncodingException e) {
|
throw new MessageConversionException("Failed to convert Message content", e);
|
}
|
messageProperties.setContentType(MessageProperties.CONTENT_TYPE_JSON);
|
messageProperties.setContentEncoding(DEFAULT_CHARSET);
|
if (bytes != null) {
|
messageProperties.setContentLength(bytes.length);
|
}
|
return new Message(bytes, messageProperties);
|
}
|
|
@Override
|
public Object fromMessage(Message msg) throws MessageConversionException {
|
String message = null;
|
try {
|
message = new String(msg.getBody(), DEFAULT_CHARSET);
|
} catch (UnsupportedEncodingException e) {
|
|
}
|
return JSON.parseObject(message, new TypeReference<Map<String, Object>>() {});
|
}
|
}
|