有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用JMS将AMQ替换为SQS,但消息对象中的一些属性值为空

在一些旧项目中,我需要用SQS替换AMQ。我遇到的问题是,当我收到消息时,一些“消息”属性(如(getJMSType())为空,例如:

在onMessage方法中,我有:

@Override
    public void onMessage(Message message) {
        LOG.info(CLASS_NAME, new Date() + " Message received... ");
        Converter.EVENT_TYPE eventType = null;
        String serviceType = null;
        try {
            if (message instanceof TextMessage) {
                TextMessage txtMsg = (TextMessage) message;
                String onMessageRequestXML = txtMsg.getText();
              
                serviceType = txtMsg.getJMSType(); <----------------- THESE ONE
                if (serviceType == null) {
                    LOG.warning(CLASS_NAME, "JMS message type is null!");
                    return;
                }
                eventType = converter.getEventType(onMessageRequestXML);
                LOG.info(CLASS_NAME, "Message received is of EventType: " + eventType + " ServiceType : " + serviceType);

                if (serviceType.equalsIgnoreCase(ServiceConstants.MW_METER_MGMT_HOUSEHOLD_UPDATE_REQUEST_JMS_TYPE)) {


在我的“message sender”代码中,我设置了消息内容以及JMSType的值

例如:

connection = connectionFactory.createConnection();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            MessageProducer producer = session.createProducer(session.createQueue("nonprod-mbo-sqs-api-hybridcollection-dev-mwcfgsend"));

            String mes = "TEST...";
            TextMessage message = session.createTextMessage(mes);
            message.setJMSType("MW_METER_MGMT_HOUSEHOLD_UPDATE_REQUEST_JMS_TYPE");
            message.setJMSMessageID(""+System.currentTimeMillis());
            producer.send(message);

在我的项目中,我使用的是amazon sqs java消息传递库版本1.0.8。 我们也尝试使用SQSTextMessage代替TextMessage,但结果是一样的

你知道我收到消息时为什么不包括这些值吗


共 (0) 个答案