簡體   English   中英

通過JMS API檢查HornetQ中是否存在隊列

[英]Checking if a queue exists in HornetQ via JMS API

我想檢查HornetQ中是否存在jms隊列。 我正在使用jms管理api:

public boolean queueExists(String queueName) throws Exception 
{
    final Queue managementQueue = HornetQJMSClient.createQueue("hornetq.management");
    Connection connection = jmsConnectionFactory.createConnection();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    QueueRequestor requestor = new QueueRequestor((QueueSession) session, managementQueue);
    connection.start();
    Message message = session.createMessage();
    JMSManagementHelper.putAttribute(message, queueName, ???);
    Message reply = requestor.request(message);
    Object result = JMSManagementHelper.getResult(reply);
    //??? 
}

我的問題是為此目的應在請求消息中放入哪個屬性? 在哪里可以找到所有可能的屬性(文檔或類的常量字段)?

JMSManagementHelper.putAttribute(message, queueName, ???);

我應該如何處理回復消息的結果以了解請求結果?

Message reply = requestor.request(message);
Object result = JMSManagementHelper.getResult(reply);
//??? 

我正在使用HornetQ 2.4.1.Final。

必須使用JMSManagementHelper.putOperationInvocation()代替JMSManagementHelper.putAttribute(),資源名稱為:jms,操作參數為getQueueNames。 該操作的結果是一個Object [],其中包含所有jms隊列名稱。

public boolean queueExists(String queueName) throws Exception 
{
    final Queue managementQueue = HornetQJMSClient.createQueue("hornetq.management");
    Connection connection = jmsConnectionFactory.createConnection();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    QueueRequestor requestor = new QueueRequestor((QueueSession) session, managementQueue);
    connection.start();
    Message message = session.createMessage();
    JMSManagementHelper.putOperationInvocation(message,
       org.hornetq.api.core.management.ResourceNames.JMS_SERVER, "getQueueNames");
    Message reply = requestor.request(message);
    Object result = JMSManagementHelper.getResult(reply);
    Object[] results = (Object[])result;
    for (int i = 0; i < results.length; i++)  
    {  
        if (queueName.equals(((String)results[i])))  
            return true;  
    }
    return false;
}

暫無
暫無

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

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