in rocketmq-jms/core/src/main/java/org/apache/rocketmq/jms/util/MessageConverter.java [73:145]
public static JmsBaseMessage convert2JMSMessage(MessageExt msg) throws Exception {
JmsBaseMessage message;
if (MsgConvertUtil.MSGMODEL_BYTES.equals(
msg.getUserProperty(MsgConvertUtil.JMS_MSGMODEL))) {
message = new JmsBytesMessage(msg.getBody());
}
else if (MsgConvertUtil.MSGMODEL_OBJ.equals(
msg.getUserProperty(MsgConvertUtil.JMS_MSGMODEL))) {
message = new JmsObjectMessage(MsgConvertUtil.objectDeserialize(msg.getBody()));
}
else if (MsgConvertUtil.MSGMODEL_TEXT.equals(
msg.getUserProperty(MsgConvertUtil.JMS_MSGMODEL))) {
message = new JmsTextMessage(MsgConvertUtil.bytes2String(msg.getBody(),
Charsets.UTF_8.toString()));
}
else {
// rocketmq producer sends bytesMessage without setting JMS_MSGMODEL.
message = new JmsBytesMessage(msg.getBody());
}
//-------------------------set headers-------------------------
Map<String, Object> properties = new HashMap<String, Object>();
message.setHeader(JmsBaseConstant.JMS_MESSAGE_ID, "ID:" + msg.getMsgId());
if (msg.getReconsumeTimes() > 0) {
message.setHeader(JmsBaseConstant.JMS_REDELIVERED, Boolean.TRUE);
}
else {
message.setHeader(JmsBaseConstant.JMS_REDELIVERED, Boolean.FALSE);
}
Map<String, String> propertiesMap = msg.getProperties();
if (propertiesMap != null) {
for (String properName : propertiesMap.keySet()) {
String properValue = propertiesMap.get(properName);
if (JmsBaseConstant.JMS_DESTINATION.equals(properName)) {
String destinationStr = properValue;
if (null != destinationStr) {
List<String> msgTuple = Arrays.asList(destinationStr.split(":"));
message.setHeader(JmsBaseConstant.JMS_DESTINATION,
new JmsBaseTopic(msgTuple.get(0), msgTuple.get(1)));
}
}
else if (JmsBaseConstant.JMS_DELIVERY_MODE.equals(properName) ||
JmsBaseConstant.JMS_PRIORITY.equals(properName)) {
message.setHeader(properName, properValue);
}
else if (JmsBaseConstant.JMS_TIMESTAMP.equals(properName) ||
JmsBaseConstant.JMS_EXPIRATION.equals(properName)) {
message.setHeader(properName, properValue);
}
else if (JmsBaseConstant.JMS_CORRELATION_ID.equals(properName) ||
JmsBaseConstant.JMS_TYPE.equals(properName)) {
message.setHeader(properName, properValue);
}
else if (JmsBaseConstant.JMS_MESSAGE_ID.equals(properName) ||
JmsBaseConstant.JMS_REDELIVERED.equals(properName)) {
//JMS_MESSAGE_ID should set by msg.getMsgID()
continue;
}
else {
properties.put(properName, properValue);
}
}
}
//Handle System properties, put into header.
//add what?
message.setProperties(properties);
return message;
}