2012-10-31 2 views
0

구독자가 매우 느린 주제에 많은 메시지를 게시하는 경우. geronimos "JMS Resources"탭의 "Queue Size"는 0으로 유지됩니다. 주제 대신 JMS 대기열을 사용하면 크기가 커질 수 있습니다. 두 시나리오 모두에서 모든 메시지가 전달됩니다.JMS 주제 큐 크기 항상 0

왜 "대기열 크기"항목이 항상 0으로 표시됩니까?

답변

2

주제는 게시 - 가입 모델을 나타내며, 청취자가 없을 때 메시지가 사라집니다. 따라서 주제 크기에 대한 쿼리는 항상 0입니다.

주제는 여러 가입자를 가질 수 있으므로 해당 주제에 대해 "청취 중"인 여러 클라이언트에서 메시지를 읽을 수 있습니다.

대기열은 클라이언트가 다음 메시지를 요구할 때까지 메시지를 보관합니다. 여기에서 현재 보유하고있는 메시지의 크기를 쿼리 할 수 ​​있습니다. 메시지는 하나의 클라이언트에서만 수집 할 수 있습니다.

오라클에 의해 Basic JMS API concepts도 참조하십시오.

이상적인 상황에 대해 설명하면 임시 대기열뿐만 아니라 지속 가능한 주제는 여기에서 고려되지 않습니다.

+0

어쩌면 나는 내 질문에 대해 명확하지 않았지만 실제로 알고 싶었던 것은 다음과 같습니다. 주제가 포함되어 있고 청취자가있는 시나리오에서 소비자/청취자가 처리하는 데 오랜 시간이 걸리면 메시지가 사라지지 않습니다. 메시지를 생성하는 데 필요한 시간보다 길다. 주제 메시지는 "대기 중"이됩니다. JMS를 통해 특정 고객을 위해 대기중인 메시지의 수를 어디서 조회 할 수 있는지 알고 싶었습니다. – atx

+0

흠, Geronimo는 잘 모르지만 ActiveMQ를 사용합니다. JMX 리소스를 확인 했습니까? 가능하면 "기내 수"입니까? http://activemq.apache.org/how-do-i-find-the-size-of-a-queue.html 및 http://activemq.apache.org/jmx.html – Dag