JMS、ActiveMQ - 奇怪的字符串添加到我的短信正文中
JMS, ActiveMQ - weird string prepended to my text message body
我正在开发生产者-消费者应用程序。两者通过 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 应用程序。
我怎么解决这个问题?谢谢!
对于那些可能 运行 遇到同样问题的人:我发现问题出在经纪人身上。我使用的是 rmohr/activemq 容器,我通过切换到 vromero/activemq-artemis
解决了这个问题
我正在开发生产者-消费者应用程序。两者通过 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 应用程序。 我怎么解决这个问题?谢谢!
对于那些可能 运行 遇到同样问题的人:我发现问题出在经纪人身上。我使用的是 rmohr/activemq 容器,我通过切换到 vromero/activemq-artemis
解决了这个问题