Если сообщение является экземпляром TextMessage
, оно будет содержать строку, соответствующую UTF-16, а не байтовый массив.
Тем не менее, вы должны добавить некоторые защитные логи c, чтобы убедиться:
Message receivedMessage = receiver.receive();
if (receivedMessage instanceof TextMessage) {
TextMessage textMessage = (TextMessage) receivedMessage;
try {
String text = textMessage.getText();
...
} catch (JMSException jmsex) {
...
}
} else {
// Not a TextMessage, maybe its a JMSBytesMessage, let's check
...
}
Это, конечно, при условии, что ваше приложение-производитель генерирует текстовые сообщения. Так что, если это приложение JMS, оно должно выглядеть примерно так:
Destination destination = context.createQueue("queue:///" + QUEUE_NAME);
JMSProducer producer = context.createProducer();
logger.info("producer created");
TextMessage message = context.createTextMessage("
L'hôpital est près de l'hôtel");
producer.send(destination, message);