Как я могу проверить, существует ли очередь на Activemq - PullRequest
1 голос
/ 18 февраля 2020

У меня есть этот метод, который выдает мне исключение, когда очередь данных не существует, но не существует. У вас есть другой способ решить эту проблему?

public void checkDataQueue(String dataQueue) throws JMSException {

          Connection connection = null;
          Session session = null;
          connection = jmsTemplate.getConnectionFactory().createConnection();
          session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

          Queue queue = session.createQueue(dataQueue);
          QueueBrowser browser = session.createBrowser(queue);
      }

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

спасибо, Тим, я решил это этим методом.

public boolean existDataQueue(String dataQueue) throws JMSException {
            boolean response = false;
            ActiveMQConnectionFactory activeMQConnectionFactory =
                new ActiveMQConnectionFactory();
            activeMQConnectionFactory.setBrokerURL(brokerUrl);
            ActiveMQConnection connection = (ActiveMQConnection)activeMQConnectionFactory.createConnection();

            connection.start();

            DestinationSource ds = connection.getDestinationSource();

            Set<ActiveMQQueue> queues = ds.getQueues();

            for (ActiveMQQueue activeMQQueue : queues) {
                try {
                    if(activeMQQueue.getQueueName().equalsIgnoreCase(dataQueue)) {
                        response = true;
                    }
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
            connection.close();
            return response;
      }
1 голос
/ 18 февраля 2020

ActiveMQ 5.x по умолчанию создает очереди по требованию, поэтому вы, возможно, изменили конфигурацию по умолчанию, чтобы запретить это, и в этом случае следует ожидать ошибки, если вы попадаете в несуществующую очередь, и вы должны проверить и обработать который. Если вам нужно быть уверенным, то брокер предоставляет интерфейс JMX для запроса информации о статистике брокера и т. Д. c. Есть и другие способы мониторинга, такие как использование вызовов в стиле Rest через интерфейс управления Jolokia.

...