Я работаю в 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