2011-12-28 3 views
3

Может ли кто-нибудь помочь в выполнении кода в java для получения глубины очередей. У нас есть 4 очереди в IBM WebSphere MQ, и внутри них есть сообщения.Проверить глубину очереди MQ

Я хочу написать jsp для чтения имен очередей и их глубины во время работы отчета. Как это сделать?

ответ

0

я увидел ответ access queue with Websphere MQ API

Вы смотрите на MBeans accessibles в JMX контексте? Если бы мне пришлось это сделать, я выставил его в Mbean.

Вы можете увидеть там IBM JMS Topologies

Для мониторинга и контроля состояния ресурсов, таких как глубина очереди, есть несколько вариантов. Предпочтительным вариантом является использование JMX Mbeans, предоставляемого Application Serve для мониторинга: JMSBasicFunction, JMSAdministration и EmbeddedJMSAdministration. Вы можете получить доступ к этим Mbeans через wsadmin или программно. Во-вторых, вы можете использовать традиционные утилиты администрирования WMQ, такие как runmqsc или MQExplorer, для поиска очередей и других ресурсов. Если вы используете эти утилиты, важно, чтобы вы не вносили никаких изменений конфигурации в диспетчер очереди очередей приложений и очереди. Эти ресурсы находятся под контролем Application Server. Внесение изменений в эти ресурсы, используя утилиты результаты MQ в нефункционирующей конфигурации

не знаю, если вы находитесь на WAS сервере, и если это все те же MBeans, но вы должны найти эквиваленты MBeans на вашей AS.

2

См. http://blog.guymahieu.com/2008/06/11/getting-the-depth-of-an-mqseries-queue-from-java/.

я вновь реализованная это следующим образом:

import com.ibm.mq.*; 

public class QueueManager { 

    private final String host; 
    private final int port; 
    private final String channel; 
    private final String manager; 
    private final MQQueueManager qmgr; 

    public QueueManager(String host, int port, String channel, String manager) throws MQException { 
     this.host = host; 
     this.port = port; 
     this.channel = channel; 
     this.manager = manager; 
     this.qmgr = createQueueManager(); 
    } 

    public int depthOf(String queueName) throws MQException { 
     MQQueue queue = qmgr.accessQueue(queueName, MQC.MQOO_INQUIRE | MQC.MQOO_INPUT_AS_Q_DEF, null, null, null); 
     return queue.getCurrentDepth(); 
    } 

    @SuppressWarnings("unchecked") 
    private MQQueueManager createQueueManager() throws MQException { 
     MQEnvironment.channel = channel; 
     MQEnvironment.port = port; 
     MQEnvironment.hostname = host; 
     MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES); 
     return new MQQueueManager(manager); 
    } 
} 

Поместите следующие банки на вашем пути к классам:

  • com.ibm.mq * баночка
  • j2ee.jar
+0

Конкретные банки, помещенные в путь, не поддерживаются и зависят от версии. До V8 IBM требовала полной установки клиента, если вы хотите поддержку для своего клиента. Начиная с версии 8.0 IBM поддерживает только клиентскую конфигурацию, поддерживающую jar, но это неправильный список банок для нее. –

+0

Это помогло, мне просто нужно было изменить режим транспорта на привязку. –

Смежные вопросы