프로세스 A는 객체 a1, a2, a3 등의 값을 계산하고 결과를 미들웨어 대기열 (RabbitMQ)로 보냅니다. 소비자는 대기열을 읽고 이러한 결과를 더 처리합니다. 주기적으로 프로세스 A는 이러한 값의 스냅 샷을 보내야하므로 소비자는 다른 계산을 수행 할 수 있습니다. 이러한 객체의 값은 독립적으로 변경 될 수 있습니다. 대기열은 다음과 같이 보일 수 있습니다. a1, a1, a2, a1, a2, a2, a3 ... 소비자는 대기열의 각 항목을 처리합니다. 스냅 샷에는 모든 개체가 포함되어야하며 소비자는 한 번에 모든 개체에 대해이 메시지를 처리합니다.메시징 패턴 질문
따라서 다음과 같은 대기열이 필요합니다. a1, a1, a3, a2, a2, [스냅 샷, a1, a2, a3], a3, a1 ... 문제는 이들 항목이 다르다는 것입니다 유형 : a1, a2와 같은 객체 유형 및 스냅 샷에 대한 유형. 이는 다른 대기열에서 처리해야한다는 것을 의미하지만이 경우 경쟁 조건이 있습니다. 즉, 소비자가 스냅 샷을 처리하기 전에 개체를 처리 할 수 있습니다.
이 문제를 해결할 수있는 패턴이 있습니까? 우리는 메시지 대기열에 RabbitMQ를 사용하고 있습니다.
아마도 "QueuesItem"과 같은 일반적인 클래스의 객체로 래핑하여 "다른 유형"문제를 해결할 수 있습니다. 소비자는 QueueItem에 포함 된 객체의 종류를 대기열에서 제거한 후 간단히 확인할 수 있습니다. 그러나 이것은 일반적인 해결책이며 RabbitMQ에 대해 아무 것도 모르기 때문에 이것을 주석으로 남겨 둘 것입니다. –