6.6. 메시지 카운터 사용
메시지 카운터를 사용하여 시간 경과에 따른 큐에 대한 정보를 가져옵니다. 이렇게 하면 다른 것을 보기 어려운 추세를 식별하는 데 도움이 됩니다.
예를 들어 메시지 카운터를 사용하여 시간이 지남에 따라 특정 큐가 사용되는 방식을 확인할 수 있습니다. 관리 API를 사용하여 큐의 메시지 수를 정기적으로 쿼리할 수도 있지만 큐가 실제로 사용되는 방법은 표시되지 않습니다. 큐의 메시지 수는 클라이언트가 보내거나 받는 메시지가 없거나 큐로 전송된 메시지 수가 사용된 메시지 수와 같기 때문에 일정하게 유지될 수 있습니다. 두 경우 모두 큐의 메시지 수는 매우 다른 방식으로 사용 중인 경우에도 동일하게 유지됩니다.
6.6.1. 메시지 카운터의 유형
메시지 카운터는 브로커의 큐에 대한 추가 정보를 제공합니다.
count
- 브로커가 시작된 이후 큐에 추가된 총 메시지 수입니다.
countDelta
- 마지막 메시지 카운터 업데이트 이후 큐에 추가된 메시지 수입니다.
lastAckTimestamp
- 대기열의 메시지를 마지막으로 승인한 때의 타임 스탬프입니다.
lastAddTimestamp
- 메시지를 마지막으로 큐에 추가했을 때의 타임 스탬프입니다.
messageCount
- 큐의 현재 메시지 수입니다.
messageCountDelta
-
마지막 메시지 카운터 업데이트 이후 대기열에서 추가/제거된 총 메시지 수입니다. 예를 들어
messageCountDelta
가-10
인 경우 전체 10개의 메시지가 큐에서 삭제되었습니다. udpateTimestamp
- 마지막 메시지 카운터 업데이트의 타임 스탬프입니다.
메시지 카운터를 결합하여 다른 의미 있는 데이터도 확인할 수 있습니다. 예를 들어 마지막 업데이트 이후 대기열에서 메시지 수를 구체적으로 알고자 하는 경우 messageCountDelta
를 countDelta
에서 뺀 것입니다.
6.6.2. 메시지 카운터 활성화
메시지 카운터는 브로커의 메모리에 약간의 영향을 미칠 수 있으므로 기본적으로 비활성화되어 있습니다. 메시지 카운터를 사용하려면 먼저 메시지 카운터를 활성화해야 합니다.
절차
-
<
;broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. 메시지 카운터를 활성화합니다.
<message-counter-enabled>true</message-counter-enabled>
메시지 카운터 기록 및 샘플링 기간을 설정합니다.
<message-counter-max-day-history>7</message-counter-max-day-history> <message-counter-sample-period>60000</message-counter-sample-period>
message-counter-max-day-history
- 브로커가 대기열 지표를 저장해야 하는 일 수입니다. 기본값은 10일입니다.
message-counter-sample-period
- 브로커는 메트릭을 수집하기 위해 큐를 샘플링하는 빈도(밀리초)입니다. 기본값은 10000밀리초입니다.
6.6.3. 메시지 카운터 검색
관리 API를 사용하여 메시지 카운터를 검색할 수 있습니다.
사전 요구 사항
메시지 카운터를 브로커에서 사용하도록 설정해야 합니다.
자세한 내용은 6.6.2절. “메시지 카운터 활성화”의 내용을 참조하십시오.
절차
관리 API를 사용하여 메시지 카운터를 검색합니다.
// Retrieve a connection to the broker's MBeanServer. MBeanServerConnection mbsc = ... JMSQueueControlMBean queueControl = (JMSQueueControl)MBeanServerInvocationHandler.newProxyInstance(mbsc, on, JMSQueueControl.class, false); // Message counters are retrieved as a JSON string. String counters = queueControl.listMessageCounter(); // Use the MessageCounterInfo helper class to manipulate message counters more easily. MessageCounterInfo messageCounter = MessageCounterInfo.fromJSON(counters); System.out.format("%s message(s) in the queue (since last sample: %s)\n", messageCounter.getMessageCount(), messageCounter.getMessageCountDelta());
추가 리소스
- 메시지 카운터에 대한 자세한 내용은 6.4.3절. “대기열 관리 작업” 을 참조하십시오.