2013-12-01 5 views
1

Я пытался получить список текущих активных HornetQ очередей, как это:ПРИСТУПАЯ очереди HornetQ список из Java кода

ServerLocator locator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(NettyConnectorFactory.class.getName(), getConfigMap())); 
ClientSessionFactory factory = locator.createSessionFactory(); 

ClientSession session = return factory.createSession(true, true, 0); 

ClientSession.BindingQuery result = session.bindingQuery(new SimpleString("localhost")); 

System.out.println(result.getQueueNames().size()); 

Но она возвращает 0. Похоже, я сделал неправильный BindingQuery, но я не нашел примеров в документации.

ответ

0

Адрес здесь не является IP-адресом.

В очереди ядра HornetQ у нас есть концепция очередей, и каждая очередь (ядро-очередь) будет привязана к адресу. в этом случае несколько очередей будут принадлежать одному адресу.

Пример:

адрес: Счет queue1: производство-фактура Queue2: печать счет-фактура Queue3: Доставка счета-фактуры

Таким образом, вы посылаете сообщения в адрес счета-фактуры и каждая очередь получит сообщение.

Если вы хотите найти, какие адреса и очереди у вас есть, вам нужно посмотреть на операции управления, а не на клиентский ядро-API. Конкретный API, который вы выполнили, предназначен для поиска существования очередей на этом адресе с использованием этой концепции.

Попробуйте сыграть с JMX-методами для перечисления очередей или с помощью ManagementServices :: getResources (Class classType);

Вы также можете использовать операции управления AS7 или консоль управления.

+0

Не могли бы вы привести несколько примеров? В документации отсутствует код :( – skayred

1

Бит поздно ответ. Надеюсь, это поможет кому-то.

ServerLocator locator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(InVMConnectorFactory.class.getName())); 
ClientSessionFactory sf = locator.createSessionFactory(); 
ClientSession session = sf.createSession(false, true, true); 
session.start(); 

ClientRequestor requestor = new ClientRequestor(session, "jms.queue.hornetq.management"); 
ClientMessage message = session.createMessage(false); 
ManagementHelper.putAttribute(message, ResourceNames.CORE_SERVER, "queueNames"); 
ClientMessage reply = requestor.request(message); 
Object queueNames = ManagementHelper.getResult(reply); 

pom.xml:

<dependency> 
     <groupId>org.hornetq</groupId> 
     <artifactId>hornetq-core-client</artifactId> 
     <version>2.3.0.CR1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.hornetq</groupId> 
     <artifactId>hornetq-jms-client</artifactId> 
     <version>2.3.0.CR1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.hornetq</groupId> 
     <artifactId>hornetq-server</artifactId> 
     <version>2.3.1.Final</version> 
     <scope>provided</scope> 
    </dependency>