JMS、ActiveMQ - 奇怪的字符串添加到我的短信正文中

问题描述 投票:0回答:1

我正在开发一个生产者-消费者应用程序。两者通过ActiveMQ队列连接。 当我尝试发送消息时,在内容之前添加以下字符串:

Sr�)�x-opt-jms-destQ�x-opt-jms-msg-typeQSs�d
�/ID:72a1faef-ff5a-40dd-aecc-61e94c0a432a:1:1:1-1@�queue://name_of_my_queue@@@@@@�~
�Sw�
actual message

消息被消费者检测为 ActiveMQBytesMessage,并且无法正确获取其内容。 以下是生产者和消费者的代码片段:

消费者

 String receiveMessage() {
  MessageConsumer consumer = session.createConsumer(session.createQueue(receiverQueue));
  String content = "";


  try {
    Message message = consumer.receive();
    if(message instanceof TextMessage) {
      content = ((TextMessage) message).getText(); 
    }
    else {
      BytesMessage byteMessage = (BytesMessage) message;
      byte[] byteData = null;
      byteData = new byte[(int) byteMessage.getBodyLength()];
      byteMessage.readBytes(byteData);
      byteMessage.reset();
      content =  new String(byteData);
    }
  }
  catch (JMSException | JsonProcessingException e) {
    log.error(e.getMessage());
  }
  return content;
}

制作人

void sendMessage() {
   JMSContext context;

    try {
       context = connectionFactory.createContext(Session.AUTO_ACKNOWLEDGE);
        JMSProducer producer = context.createProducer();
        TextMessage tm = context.createTextMessage("TestMessage");
        producer.send(context.createQueue(myQueue), tm);
      }
    }
    catch (JMSException | JsonProcessingException e) {
       System.out.println(e.getMessage());
    }
}

生产者位于 quarkus 应用程序中。 我怎么解决这个问题?谢谢!

java jms activemq quarkus
1个回答
0
投票

对于那些可能遇到同样问题的人:我发现问题出在经纪人身上。我使用的是

rmohr/activemq
容器,我通过切换到
vromero/activemq-artemis
解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.