gpt4 book ai didi

java - 将 JMS 消息转换为 TextMessage 时出现问题

转载 作者:行者123 更新时间:2023-12-02 12:45:04 27 4
gpt4 key购买 nike

我使用 QueueBrowser 获取并循环访问 JMS 队列上的消息枚举。当我尝试将 msgs.nextElement() 转换为 TextMessage 时,IntelliJ IDEA 告诉我:

java.lang.ClassCastException: weblogic.jms.common.ObjectMessageImpl cannot be cast to javax.jms.TextMessage

我对 JMS 很陌生,不太确定 weblogic.jms.common.ObjectMessageImpl 是什么。将 msgs.nextElement() 转换为 Message 类型似乎工作正常。我的代码如下。

private void readQueueMessage() throws JMSException {
int counter = 0;
System.out.println("Starting the subscriber");
QueueBrowser queueBrowser = queueSession.createBrowser(queue);
Enumeration msgs = queueBrowser.getEnumeration();
//queueConnection.start();
System.out.println("Queue started");
if ( !msgs.hasMoreElements() ) {
System.out.println("No messages in queue");
} else {
while (msgs.hasMoreElements()) {
System.out.println(">>> message count: " + ++counter);

Message message = (Message)msgs.nextElement();
System.out.println("MessageID: " + message.getJMSMessageID() + "\tPriority: " + message.getJMSPriority() + "\tDeliveryMode: " + message.getJMSDeliveryMode());
System.out.println("Timestamp: " + message.getJMSTimestamp() + "\tJMSDestination: " + message.getJMSDestination() + "\tReplyTo: " + message.getJMSReplyTo());
System.out.println("Data: " + ((TextMessage)message).getText());

if (counter >= 3) break;
}
}

System.out.println("stopping the queue");
queueConnection.stop();
}

最佳答案

JMS 中有多种不同类型的消息。您正在尝试读取基本上包含字符串的 TextMessage,但您正在读取的消息实际上是包含 Java 对象的 ObjectMessage。您应该使用 instanceof TextMessage 检查消息是否是文本消息,如果是其他消息则忽略它或引发异常。

weblogic.jms.common.ObjectMessageImpl 类只是 WebLogic 对 ObjectMessage 的实现。

关于java - 将 JMS 消息转换为 TextMessage 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44804033/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com