systemUsage, destinationPolicy 및 flow control 간의 관계를 완전히 이해하는 데 어려움을 겪고 있으므로 systemUsage 및 destinationPolicy 구성에 대한 도움이 필요합니다.ActiveMQ destinationPolicy 및 systemUsage 구성
우리의 모든 메시지는 영속입니다! producerFlowControl이 켜져 있습니다.
그래서 우리는 ActiveMQ에 최대 512MB 힙 공간을 말합니다.
우리 systemUsage은 다음과 같이 설정됩니다 아래
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="200 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="10 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="1000 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
우리의 목적지 정책 :
이<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb">
<pendingSubscriberPolicy>
</pendingSubscriberPolicy>
</policyEntry>
<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
사람은 다음이 정확한지 확인할 수 :
이는 것을 의미한다 각 개별 대기열/주제 메모리 제한은 1MB입니다. 이 1MB가 히트 될 때 정확히 무슨 일이 일어나는가, 생산자를위한 대기열 블록은 디스크에 기록 하는가?
모든 대기열 및 주제에 허용되는 총 메모리는 200MB입니다. 우리는 200 개의 채널이 1MB의 전체 용량에서 작동 할 수 있음을 의미합니다. 우리는 현재 총 16 개의 대기열과 주제를 가지고 있으므로 분명히 도달하지 못했습니다.
메모리 제한에 대한 개별 정책 항목을 제거하고 다양한 채널간에 메모리를 공유하는 것이 더 좋습니까?
우리는 어떤 시점에서이를 차단합니까?
도움을 주시면 대단히 감사하겠습니다! 페이팔로 맥주 한 잔 할 수 있어요!
메모로 메모리 제한에 도달하면 다른 사람이 공간을 확보 할 때까지 대기열이 트랜잭션 된 소비자에게 "비어있는"것으로 표시됩니다. 또한 - 커서는 기본적으로 "memoryLimit을 모두 사용하면 비 지속 메시지 저장소"에 유용합니다. – rogerdpack