Итак, у меня есть брокер ActiveMQ и некоторые производители, которые помещают в него некоторые самодельные объекты.У меня также есть некоторые потребители, которые получают эти сообщения (сериализованные объекты) без проблем.Но я хочу создать инструмент, который подключается к брокеру и отображает все сообщения (сериализованные объекты).
Я попытался сделать это с помощью и ActiveMQConnection:
Set<ActiveMQQueue> currentMessageQueues = activeMQConnection.getDestinationSource().getQueues();
Iterator<ActiveMQQueue> messageQueueIterator = currentMessageQueues.iterator();
while (messageQueueIterator.hasNext()) {
ActiveMQQueue currentQueue = messageQueueIterator.next();
QueueSession queueSession = activeMQConnection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
QueueBrowser browser = queueSession.createBrowser(currentQueue);
Enumeration<?> messagesInQueue = browser.getEnumeration();
while (messagesInQueue.hasMoreElements()) {
Message queueMessage = (Message) messagesInQueue.nextElement();
if (queueMessage instanceof ActiveMQObjectMessage) {
ActiveMQObjectMessage objectMessage = (ActiveMQObjectMessage) queueMessage;
objectMessage.getObject();
}
}
}
С этим кодом я получаюисключение для objectMessage.getObject ():
javax.jms.JMSException: Failed to build body from content. Serializable class not available to broker. Reason: java.lang.ClassNotFoundException: MyMessage
Я использовал режим отладки, и ActiveMQObjectMessage установил нулевой объект.
Является ли этот подход хорошим и если да, что я делаю неправильно?Как я могу также получить объект от брокера?