Как я могу получить все сообщения от брокера 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 установил для объекта значение null.

Хорош ли этот подход, и если да, что я делаю не так? Как я могу также получить объект от брокера?

8
задан telebog 11 October 2011 в 12:36
поделиться