J'utilise un QueueBrowser pour obtenir et parcourir une énumération de messages dans une file d'attente JMS. Lorsque je tente de jeter msgs.nextElement()
comme TextMessage, IntelliJ IDEA me dit:Problème lors de l'envoi d'un message JMS en tant que TextMessage
java.lang.ClassCastException: weblogic.jms.common.ObjectMessageImpl cannot be cast to javax.jms.TextMessage
Je suis très nouveau pour JMS et je ne suis pas tout à fait sûr de ce que weblogic.jms.common.ObjectMessageImpl
est. Casting msgs.nextElement()
to type Le message semble fonctionner correctement. Mon code est ci-dessous.
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();
}
Quelle est la classe des messages que vous envoyez? il semble que vous vous attendiez à un 'TextMessage' mais vous obtenez autre chose à la place. – yeedle