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) 个答案