내 응용 프로그램에서 Websphere MQ 당 대기열 통계 (마지막 메시지 가져 오기/넣기 시간, 대기열/대기열에서 제외 된 메시지 수, 현재 대기열 깊이, 연결된 클라이언트 수)를 쿼리해야합니다. PCFAgent를 통해 큐의 깊이를 얻을 수 있었지만, IBM 문서가 다소 혼란 스럽기 때문에 나머지 부분에 대해서는 다소 고생했습니다.Java에서 MQ 대기열 통계 가져 오기
도움이되는 유용한 참고 자료 (또는 코드 예)를 알고 있습니까?
내 응용 프로그램에서 Websphere MQ 당 대기열 통계 (마지막 메시지 가져 오기/넣기 시간, 대기열/대기열에서 제외 된 메시지 수, 현재 대기열 깊이, 연결된 클라이언트 수)를 쿼리해야합니다. PCFAgent를 통해 큐의 깊이를 얻을 수 있었지만, IBM 문서가 다소 혼란 스럽기 때문에 나머지 부분에 대해서는 다소 고생했습니다.Java에서 MQ 대기열 통계 가져 오기
도움이되는 유용한 참고 자료 (또는 코드 예)를 알고 있습니까?
기본 위치에 WMQ 클라이언트를 설치 한 경우 샘플은 C:\Program Files (x86)\IBM\WebSphere MQ\tools\pcf\samples
이됩니다.
UNIX 형식에서는 /opt/mqm/samp
으로 끝납니다.
jar 파일을 잡고 클라이언트를 설치하지 않은 경우 샘플, 추적 유틸리티, 진단 도구 등 지원되는 구성이 없습니다. 클라이언트 설치 미디어는 무료로 제공됩니다 SupportPacs page에서 다운로드하십시오. 버전 7.1은 SupportPac MQC71
당신이 있는지 확인 SupportPac MQC7
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 카운트 제외)는 사용하여 필요한 속성의 대부분을 얻을 수 있습니다. 마지막 msg get 시간을 얻으려면 대기열 모니터링 (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 });
당신은 사용 PARMS를 검색 할 수 있습니다
pcfResp = pcfAgent.send(inquireQueueStatus);
를 각각의 PARMS하십시오 (XXXXXX
데이터의 유형입니다)을 getXXXXXParameterValue
방법을 사용할 수 있습니다. 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);
당신이 더 많은 질문이 있으면 알려주세요.
ListQueueDepth 샘플은 이미 큐 깊이를 가져 오는 데 사용한 샘플입니다.불행히도 필요한 다른 통계 (마지막 메시지 가져 오기/넣기 시간, en/dequeued 메시지 수, 연결된 클라이언트 수)를 다루는 샘플이없는 것으로 보입니다. – CAFxX
철저한 답변을 보내 주셔서 감사합니다! enq/deq 카운트가 너무 나쁘면 통계를 재설정해야합니다. – CAFxX
나는 그것을 "WMQ의 양자 API 호출"이라고 부른다 : 값을 관찰하는 행위는 값을 변경시킨다. 나는 그 행동을 결코 정말로 좋아하지 않았다. 새 기능 "대기열 통계 조회"를 요청하려면 http://bit.ly/WMQReq에있는 WMQ 요청 양식을 사용하십시오. –