2011-02-02 12 views
6

मैं हॉर्नैटक 2.0 का उपयोग कर रहा हूं, मुझे नहीं पता कि मैं कैसे जान सकता हूं कि इस समय कतार पर कितने संदेश बैठे हैं।एक horneq कतार लंबाई कैसे खोजें

यह एक बहुत ही उपयोगी सुविधा है, इसलिए अगर मैं उपभोक्ता पर्याप्त संदेश का उपभोग करता हूं तो मैं रनटाइम पर जान सकता हूं।

मैं जेएमएस एपीआई का उपयोग नहीं कर रहा हूं लेकिन अत्यधिक अनुकूलित कोर एपीआई का उपयोग नहीं कर रहा हूं।

कतार में संदेश की संख्या प्राप्त करने का सही (तेज़ तरीका) क्या है?

मुझे 2 तरीके मिले लेकिन पता नहीं कि इसे करने का सही तरीका क्या है।

public int size(){ 

    ClientSession session; 

    try { 

     session = sf.createSession(false, false, false); 

     ClientRequestor requestor = new ClientRequestor(session, "hornetq.management"); 

     ClientMessage m = session.createMessage(false); 

     ManagementHelper.putAttribute(m, "core.queue." + queueName, "messageCount"); 

     ClientMessage reply = requestor.request(m); 

     int count = (Integer) ManagementHelper.getResult(reply); 

     return count; 

    } catch (Exception e) { 

     e.printStackTrace(); 

    } 

    return 0; 

} 

या

public synchronized int size(){ 

    ClientSession coreSession = null; 

    int count = 0; 

    try { 

     coreSession = sf.createSession(false, false, false); 

     ClientSession.QueueQuery result; 

     result = coreSession.queueQuery(new SimpleString(queueName)); 

     count = result.getMessageCount(); 

    } catch (HornetQException e) { 

     e.printStackTrace(); 

    } finally { 

     if (coreSession!= null){ 

      try { 

       coreSession.close(); 

      } catch (HornetQException e) { 

       e.printStackTrace(); 

      } 

     } 

    } 

    return count; 

} 

उत्तर

6

मैं उन 2 तरीके पाया

public synchronized int size(){ 
    ClientSession session; 
    try { 
     session = sf.createSession(false, false, false); 
     ClientRequestor requestor = new ClientRequestor(session, "hornetq.management"); 
     ClientMessage m = session.createMessage(false); 
     ManagementHelper.putAttribute(m, "core.queue." + queueName, "messageCount"); 
     ClientMessage reply = requestor.request(m); 
     int count = (Integer) ManagementHelper.getResult(reply); 
     return count; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return 0; 
} 

और

public synchronized int size(){ 
    ClientSession coreSession = null; 
    int count = 0; 
    try { 
     coreSession = sf.createSession(false, false, false); 
     ClientSession.QueueQuery result; 
     result = coreSession.queueQuery(new SimpleString(queueName)); 
     count = result.getMessageCount(); 
    } catch (HornetQException e) { 
     e.printStackTrace(); 
    } finally { 
     if (coreSession!= null){ 
      try { 
       coreSession.close(); 
      } catch (HornetQException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    return count; 
} 
1

hornetq-2.2.14. संदेश-काउंटर पर एक उदाहरण के साथ अंतिम जहाज। यह hornetq-2.2.14 पर स्थित है। Final/examples/jms/message-counters

संबंधित मुद्दे