Получить глубину очередей из Java-кода - PullRequest
2 голосов
/ 29 декабря 2011

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

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

Ответы [ 3 ]

4 голосов
/ 29 декабря 2011

Не думаю, что есть способ получить глубину очереди, используя JMS. Однако вы можете использовать специфичный для MQ Series Java API для получения этой информации. Вот пример кода. Обратите внимание на int openOptions = MQC.MQOO_INQUIRE;

Вот справочное руководство

int depth = 0;
MQQueueManager qMgr; // define a queue manager object
String mqHost = "";
String mqPort = "";
String mqChannel = "";
String mqQMgr = "";
String mqQueue = "";
try {
    // Set up MQSeries environment
   MQEnvironment.hostname = mqHost;
   MQEnvironment.port = Integer.valueOf(mqPort).intValue();
   MQEnvironment.channel = mqChannel;
   MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,
   MQC.TRANSPORT_MQSERIES);
   qMgr = new MQQueueManager(mqQMgr);
   int openOptions = MQC.MQOO_INQUIRE;
   MQQueue destQueue = qMgr.accessQueue(mqQueue, openOptions);
   depth = destQueue.getCurrentDepth();
   destQueue.close();
   qMgr.disconnect();
} catch (Exception err) {
   err.printStackTrace();
}
0 голосов
/ 15 марта 2018

Некоторые из этих функций устарели в IIB, поэтому я вставляю обновленный код. Работает:)

Наслаждайтесь

Получение глубины очереди MQ из Java:

try {
        int depth = 0;
        MQQueueManager qMgr; // define a queue manager object
        String mqHost = "";
        String mqPort = "";
        String mqChannel = "";
        String mqQMgr = "";
        String mqQueue = "";
        try {
            // Set up MQSeries environment
           MQEnvironment.hostname = mqHost;
           MQEnvironment.port = Integer.valueOf(mqPort).intValue();
           MQEnvironment.channel = mqChannel;
           //MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES);
           qMgr = new MQQueueManager(mqQMgr);
           //int openOptions = 1;//MQC.MQOO_INQUIRE;



           int openOptions = CMQC.MQOO_INQUIRE + CMQC.MQOO_FAIL_IF_QUIESCING + CMQC.MQOO_INPUT_SHARED;


           MQQueue destQueue = qMgr.accessQueue(mqQueue, openOptions);
           depth = destQueue.getCurrentDepth();
           destQueue.close();
           qMgr.disconnect();


            MbMessage outMessage = new MbMessage();
            outAssembly = new MbMessageAssembly(inAssembly, outMessage);
            MbElement root = outMessage.getRootElement();
            MbElement outXmlRoot =  root.createElementAsLastChild(MbXMLNSC.PARSER_NAME);
            MbElement Appointment = outXmlRoot.createElementAsLastChild(MbElement.TYPE_NAME, "RootElementXMLName", null);
            Appointment.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Q_DepthFromServer", depth);        
            out.propagate(outAssembly);    
        }
0 голосов
/ 03 января 2012

Если вы установите клиент WMQ из загрузки IBM (в отличие от простого захвата библиотек классов из установки QMgr), вы получите пример кода.Среди предоставленных примеров несколько, которые перечисляют имена очереди, запрашивают свойства объекта и создают объекты.При установке по умолчанию в Win 7 их можно найти по адресу C:\Program Files (x86)\IBM\WebSphere MQ\tools\pcf\samples.

. Загрузите клиентские библиотеки WMQ здесь:

НАСТОЯТЕЛЬНО рекомендуется использовать последнюю версию клиента WMQ для любой новой разработки.Он будет работать для всех предыдущих версий WMQ на любом уровне функциональности, предоставляемом целевым QMgr.См. Заявление о совместимости и взаимодействии в Инфоцентре.Информационный центр для используемой версии сервера или клиента WMQ можно найти на целевой странице библиотеки WMQ .

...