.Net 프로그램에서 ActiveMQ를 사용하고 있으며 메시지 이벤트가 넘쳐납니다.C# 응용 프로그램에서 ActiveMQ에서 오는 메시지 양을 어떻게 조절할 수 있습니까?
즉, 큐 이벤트 'onMessage (IMessage receivedMsg)'를 얻으면 메시지를 내부 스레드로 보내고 X 스레드는 해당 메시지를 처리합니다.
처음에는 'AcknowledgementMode.AutoAcknowledge'를 사용하여 세션을 만들었으므로 대기열의 모든 메시지가 빨려 들어서 메모리 대기열에 들어갔다는 것을 추측하고 있습니다 (충돌로 인해 모든 것이 위험합니다). 잃어버린).
그래서 세션을 만들 때 'AcknowledgementMode.ClientAcknowledge'를 사용했고 작업자가 메시지를 준비 할 때 메시지의 'commit()'메서드를 호출합니다. 그러나 여전히 모든 메시지가 대기열에서 빠져 나옵니다.
X 개의 메시지 만 처리 중이거나 내부 대기열에 있고 모든 것이 '다운로드 중'이 아니라는 것을 어떻게 구성 할 수 있습니까?
ActiveMQ를 한번도 본 적이 없지만 ActiveMQ 리스너와 함께 N 개의 스레드를 설정하고 수신 이벤트 내에서 메시지를 처리합니까? –
@will hughes : 내 전체 프로그램은 비동기 방식으로 작성됩니다. 따라서 DB 액세스조차도 콜백과 비동기 적으로 수행됩니다. 그래서 나는 그 사건에 남을 수 없다. – Toad