Я пытаюсь отправлять и получать сообщения с Qpid JMS и ProtonJ (AMQP 1.0) и не могу получить TextMessage
.Исключение говорит, что оно не может привести JmsBytesMessage
к TextMessage
:
org.apache.qpid.jms.message.JmsBytesMessage cannot be cast to javax.jms.TextMessage
Даже попытка получить сообщение как JmsTextMessage
приводит к:
org.apache.qpid.jms.message.JmsBytesMessage cannot be cast to org.apache.qpid.jms.message.JmsTextMessage
Я отправляю сообщение следующим образом:
TextMessage textMessage = session.createTextMessage(message)
Queue queue = session.createQueue(queueName);
MessageProducer producer = session.createProducer(queue);
producer.send(textMessage);
Я пытаюсь получить сообщение с:
Queue queue = session.createQueue(queueName);
MessageConsumer consumer = session.createConsumer(queue);
connection.start();
TextMessage message = (TextMessage) consumer.receive();
Поскольку это не сработало, я попытался получить байты и использовать toStringМетод:
JmsBytesMessage message = (JmsBytesMessage) consumer.receive();
String stringMessage = message.toString();
со следующим результатом:
JmsBytesMessage { org.apache.qpid.jms.provider.amqp.message.AmqpJmsBytesMessageFacade@10664b39 }
В следующем тесте я просто использовал байты и превратил их в строку:
JmsBytesMessage message = (JmsBytesMessage) consumer.receive();
message.readUTF();
byte[] byteData = null;
byteData = new byte[(int) message.getBodyLength()];
message.readBytes(byteData);
message.reset();
String messageString = new String(byteData);
Результат Sw�testmessage
.Мне интересно, что это за префикс, поскольку я его не отправил.Я думаю, это должно быть что-то кодирующее.
Как получить сообщение в виде строки?