我试图获取当前有效的HornetQ
队列列表:
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 :(得分:2)
迟到的回复。希望它可以帮到某人。
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>
答案 1 :(得分:0)
此处的地址不是IP地址。
在HornetQ核心队列中我们有队列的概念,并且每个队列(核心队列)将绑定到一个地址。在这种情况下,多个队列将属于一个地址。示例:
地址:发票 队列1:制造发票 队列2:打印发票 队列3:交货发票
因此,您将消息发送到地址发票,每个队列都将收到消息。
如果要查找您拥有的地址和队列,您必须查看管理操作,而不是通过客户端核心API。您执行的特定API旨在使用此概念在该地址上找到队列的存在。
尝试使用JMX方法列出队列,或者使用ManagementServices :: getResources(Class classType);
您还可以使用AS7管理操作或管理控制台。