2011-02-02 10 views
6

私はHornetq 2.0を使用していますが、現在どのくらいのメッセージがキューに入っているのかわかりません。horneqの検索方法キューの長さ

これは非常に便利な機能なので、消費者がメッセージを十分に消費しているかどうかを実行時に知ることができます。

私はJMS APIを使用せず、高度に最適化されたコアAPIを使用しています。

キュー内のメッセージ数を取得する正しい方法(最速)は何ですか?

私は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 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.Finalは、メッセージカウンタの例を示しています。それはhornetq-2.2.14.Final/examples/jms/message-counterにあります