簡體   English   中英

是否可以在遠程代理上獲取隊列列表?

[英]Is it possible to get a list of queues on a remote broker?

我正在試圖找出如何獲取遠程代理上的現有隊列列表。

看起來我可以通過添加咨詢消息(我還沒有工作)來創建/銷毀它們來偵聽隊列,但我需要在啟動時獲得所有現有隊列。

看起來我可以使用getDestinationMap來做到這一點:

http://activemq.apache.org/maven/apidocs/org/apache/activemq/broker/region/Region.html#getDestinationMap()

但這似乎只能從嵌入式和進程中的代理調用。

我的意思是......我願意走這條路,但似乎更有意義的是為activemq設置正常的init / daemon,然后讓遠程進程像普通的JMS使用者一樣連接到它。

該文檔似乎暗示它是可能的:

http://activemq.apache.org/how-can-i-see-what-destinations-are-used.html

但這是通過使用Region對象,只有在與activemq位於同一JVM中時才有可能。

    // Create a ConnectionFactory
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");

// Create a Connection
ActiveMQConnection connection = (ActiveMQConnection) connectionFactory.createConnection();


//Important point that was missed in the above answer
connection.start();

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

for(ActiveMQQueue queue : queues){
    try {
        System.out.println(queue.getQueueName());
    } catch (JMSException e) {
        e.printStackTrace();
    }
}

請參閱此答案: https//stackoverflow.com/a/14021722/3735747

如果您在Java中執行此操作,則可以使用DestinationSource類: http//activemq.apache.org/maven/5.7.0/activemq-core/apidocs/org/apache/activemq/advisory/DestinationSource.html

創建連接並使用ActiveMQConnection類型而不是JMS連接類型。

// Create a ConnectionFactory
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");

// Create a Connection
ActiveMQConnection connection = (ActiveMQConnection) connectionFactory.createConnection();

連接后,您可以創建DestinationSource對象並獲取隊列:

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

for(ActiveMQQueue queue : queues){
    try {
        System.out.println(queue.getQueueName());
    } catch (JMSException e) {
        e.printStackTrace();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM