public static JmsBaseMessage convert2JMSMessage()

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