所以我有一個ActiveMQ代理和一些生產者,在代理中放入一些自制對象。我也有一些消費者沒有問題地接收這些消息(序列化對象)。但是我想創建一個連接到代理並顯示所有消息(序列化對象)的工具。如何從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有對象設置爲空。
這種方法很好,如果是的,我做錯了什麼? 我怎樣才能從經紀人收到對象?
消費者仍在運行嗎? Maye他們消耗/從隊列中刪除,而試圖看看? – Dag
不,消費者不運行 – telebog