변화

2011-03-17 2 views
0

내가 가진이 같은 상황 :변화

하나 개의 단일 생산자는 많은 DB 쿼리를 실행 - 결과를 메시지로 보내 단일 소비자의 큐에 도착하는 (메시지가 더와 함께 도착하지 특별 주문)

단일 소비자는 이러한 메시지를 읽고 모든 메시지가 도착한 경우에만 메시지 처리를 시작하려고합니다.

이런 종류의 문제를 해결하는 가장 좋은 방법은 무엇입니까?

감사합니다.

답변

0

모두 처리가 완료 될 때까지 처리를 지연시키는 특별한 이유가 있습니까?

내가 과거에 꽤 성공적으로 사용한 한 가지 방법은 메시지를 대기열에서 빼내고 관련 데이터와 시퀀스 번호를 메시지의 로컬 저장소에 보관하는 것입니다. 또한 각 메시지가 도착할 때마다 수신 된 메시지의 수와 저장소에 예상되는 총 메시지 수를 증가시킵니다. 마지막으로 모든 메시지가 도착했고 증분 카운터가 예상 된 메시지 수와 같으면 실제 작업을 수행합니다.

이렇게하면 모든 메시지를 수신 할 수 있지만 요구 사항에 따라 실제 작업 만 수행 할 수 있습니다.