Если вы установили клиент WMQ в папку по умолчанию, то примеры будут по адресу: C:\Program Files (x86)\IBM\WebSphere MQ\tools\pcf\samples
.
В версиях UNIX они заканчиваются на /opt/mqm/samp
.
Если вы просто захватили jar-файлы и не установили клиент, то у вас не будет поддерживаемой конфигурации - или примеров, утилит трассировки, средств диагностики и т. Д. И т. Д. И т. Д. Установочный носитель клиента доступен для бесплатной загрузки. на странице SupportPacs . В настоящее время доступны следующие клиенты:
Убедитесь, что вы ищете в информационном центре версию WebSphere MQ Server, к которой вы подключаетесь. Также обратите внимание, что если вы подключаетесь к QMgr v7 и используете клиент v6, то используемые вами константы и классы ограничат вас функциональностью v6. Предпочтительно использовать последнюю версию клиента, поскольку она всегда обратно совместима со старыми версиями QMgr.
UPDATE:
Вот некоторые фрагменты кода для выполнения запрошенных функций:
Сначала вам нужно соединение с администратором очередей (qmgr
). Тогда вы можете создать PCFMessageAgent
:
// Create PCF Message Agent
try {
pcfAgent = new PCFMessageAgent(qmgr);
} catch (MQException mqe) {
System.err.println("PCF Message Agent creation ended with reason code "
+ mqe.reasonCode);
return mqe.reasonCode;
}
Вы можете получить большинство нужных вам атрибутов, используя (кроме подсчета enq / deq) приведенный ниже вызов. Обратите внимание, что для получения последнего сообщения о времени получения \ ввода вам нужно включить мониторинг очереди (MONQ
).
// Prepare PCF command to inquire queue status (status type)
inquireQueueStatus = new PCFMessage(CMQCFC.MQCMD_INQUIRE_Q_STATUS);
inquireQueueStatus.addParameter(CMQC.MQCA_Q_NAME, "name of queue to inquire");
inquireQueueStatus.addParameter(CMQCFC.MQIACF_Q_STATUS_TYPE, CMQCFC.MQIACF_Q_STATUS);
inquireQueueStatus.addParameter(CMQCFC.MQIACF_Q_STATUS_ATTRS, new int[] {
CMQC.MQCA_Q_NAME, CMQC.MQIA_CURRENT_Q_DEPTH,
CMQCFC.MQCACF_LAST_GET_DATE, CMQCFC.MQCACF_LAST_GET_TIME,
CMQCFC.MQCACF_LAST_PUT_DATE, CMQCFC.MQCACF_LAST_PUT_TIME,
CMQCFC.MQIACF_OLDEST_MSG_AGE, CMQC.MQIA_OPEN_INPUT_COUNT,
CMQC.MQIA_OPEN_OUTPUT_COUNT, CMQCFC.MQIACF_UNCOMMITTED_MSGS });
Вы можете получить пармы, используя:
pcfResp = pcfAgent.send(inquireQueueStatus);
Для каждого отдельного параметра вы можете использовать метод getXXXXXParameterValue
(XXXXXX
- это тип данных).
Для подсчета Enq / Deq вам необходимо сбросить статистику очереди:
// Prepare PCF command to reset queue statistics
queueResetStats = new PCFMessage(CMQCFC.MQCMD_RESET_Q_STATS);
queueResetStats.addParameter(CMQC.MQCA_Q_NAME, queueName);
pcfResp3 = pcfAgent.send(queueResetStats);
queueMsgDeqCount = pcfResp3[0].getIntParameterValue(CMQC.MQIA_MSG_DEQ_COUNT);
queueMsgEnqCount = pcfResp3[0].getIntParameterValue(CMQC.MQIA_MSG_ENQ_COUNT);
Дайте мне знать, если у вас есть еще вопросы.