2015-10-16 3 views
0

Я работаю в JMS-проекте, где мы используем Message Driven beans (@MessageDriven) с сервером JBoss 7. Мы добавляем задания в сеансах за то, что мы добавили JmsProducer & JmsConsumer. Теперь мы хотим получить статус текущей очереди (например, текущее количество очередей, подсчет ожиданий, порядок, приоритет). Все эти данные задаются в JmsProducer.Как получить информацию о очереди в JBoss AS 7 с EJB 3.0?

Мы попытались получить эти данные с помощью сценариев CLI и с консоли администратора JBoss. Метод Cli работает, как показано ниже.

Очередь используется HornetQ.

"address" => [ 
    ("subsystem" => "messaging"), 
    ("hornetq-server" => "default"), 
    ("jms-queue" => "transmit_postprocessing") 
], 
"outcome" => "success", 
"result" => { 
    "consumer-count" => 1, 
    "dead-letter-address" => "jms.queue.DLQ", 
    "delivering-count" => 0, 
    "durable" => true, 
    "entries" => ["java:jboss/queue/transmit_postprocessing"], 
    "expiry-address" => "jms.queue.ExpiryQueue", 
    "message-count" => 0L, 
    "messages-added" => 4L, 
    "paused" => false, 
    "queue-address" => "jms.queue.transmit_postprocessing", 
    "scheduled-count" => 0L, 
    "selector" => undefined, 
    "temporary" => false 

} 

JmsProducer: (рабочий)

Context context = new InitialContext(); 
ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup("java:/ConnectionFactory"); 
Connection connection = connectionFactory.createConnection(); 
Session jmsSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
Destination destination = (Destination) context.lookup("java:jboss/queue/preprocessing"); 

MessageProducer messageProducer = jmsSession.createProducer(destination); 

ObjectMessage objectMessage = jmsSession.createObjectMessage(); 

     for (String key: payload.keySet()) { 
      String value = payload.get(key).toString();  
      objectMessage.setStringProperty(key, value); 
     } 

Есть ли другой способ, чтобы получить подробную информацию очереди в JmsConsumer?

Наш предыдущий код для потребителя сейчас не работает (возможно, из-за версии версии JBoss до 7).

Я пытался так много способов, но перечисление всегда пустой (хотя сеансы/очереди работают на JBoss)

Например:

ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup("java:/ConnectionFactory"); 
Queue queue = (Queue)context.lookup("java:jboss/queue/preprocessing"); 
QueueBrowser browser = session.createBrowser(queue); 
ArrayList<QueueMessage> messages = new ArrayList<QueueMessage>(); 
Enumeration e = browser.getEnumeration(); 

Любой вероятный путь/подход/идея будет полезна. Заранее спасибо.

Мой автономный-full.xml файл

<jms-connection-factories> 
    <connection-factory name="InVmConnectionFactory"> 
     <connectors> 
      <connector-ref connector-name="in-vm"/> 
     </connectors> 
     <entries> 
      <entry name="java:/ConnectionFactory"/> 
     </entries> 
    </connection-factory> 
    <connection-factory name="RemoteConnectionFactory"> 
     <connectors> 
      <connector-ref connector-name="netty"/> 
     </connectors> 
     <entries> 
      <entry name="RemoteConnectionFactory"/> 
      <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/> 
     </entries> 
    </connection-factory> 
    <pooled-connection-factory name="hornetq-ra"> 
     <transaction mode="xa"/> 
     <connectors> 
      <connector-ref connector-name="in-vm"/> 
     </connectors> 
     <entries> 
      <entry name="java:/JmsXA"/> 
     </entries> 
    </pooled-connection-factory> 
</jms-connection-factories> 


<jms-destinations> 
    <jms-queue name="testQueue"> 
     <entry name="queue/test"/> 
     <entry name="java:jboss/exported/jms/queue/test"/> 
    </jms-queue> 
    <jms-queue name="preprocessing"> 
     <entry name="java:jboss/queue/preprocessing"/> 
     <durable>true</durable> 
    </jms-queue> 
    <jms-queue name="processing"> 
     <entry name="java:jboss/queue/processing"/> 
     <durable>true</durable> 
    </jms-queue> 
    <jms-queue name="postprocessing"> 
     <entry name="java:jboss/queue/postprocessing"/> 
     <durable>true</durable> 
    </jms-queue> 
    <jms-queue name="approval_preprocessing"> 
     <entry name="java:jboss/queue/approval_preprocessing"/> 
     <durable>true</durable> 
    </jms-queue> 
    <jms-queue name="approval_postprocessing"> 
     <entry name="java:jboss/queue/approval_postprocessing"/> 
     <durable>true</durable> 
    </jms-queue> 
    <jms-queue name="transmit_preprocessing"> 
     <entry name="java:jboss/queue/transmit_preprocessing"/> 
     <durable>true</durable> 
    </jms-queue> 
    <jms-queue name="transmit_postprocessing"> 
     <entry name="java:jboss/queue/transmit_postprocessing"/> 
     <durable>true</durable> 
    </jms-queue> 
    <jms-queue name="batch"> 
     <entry name="java:jboss/queue/batch"/> 
     <entry name="java:jboss/exported/jms/queue/batch"/> 
     <durable>true</durable> 
    </jms-queue> 
    <jms-queue name="plmpreprocessing"> 
     <entry name="java:jboss/queue/plmpreprocessing"/> 
     <durable>true</durable> 
    </jms-queue> 
    <jms-queue name="dex_delete"> 
     <entry name="java:jboss/queue/dex_delete"/> 
     <durable>true</durable> 
    </jms-queue> 
    <jms-topic name="testTopic"> 
     <entry name="topic/test"/> 
     <entry name="java:jboss/exported/jms/topic/test"/> 
    </jms-topic> 
</jms-destinations> 

Список литературы используется:

http://docs.jboss.org/jbossmessaging/docs/userguide-1.2.0.GA/html/examples.html

www.mastertheboss.com/jboss-server/jboss-jms/monitoring-jms-resources- с-JBoss-а-7

https://docs.jboss.org/author/display/AS71/Messaging+configuration

ответ