【发布时间】:2017-12-01 21:49:36
【问题描述】:
我正在使用 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();
}
【问题讨论】:
-
您发送的邮件属于什么类别?看来您期待的是
TextMessage,但您却得到了其他东西。
标签: java intellij-idea jms weblogic