다른 시스템에서 메시지 브로커 (현재 JMS)를 통해 메시지를 수신하는 시스템을 구축 중입니다. 모든 보낸 사람 시스템의 모든 메시지에는 deviceId가 있으며 메시지를 수신하는 순서는 없습니다. 예를 들어 시스템 A는 deviceId = 1 인 메시지를 보낼 수 있고 시스템 b는 deviceId = 2 인 메시지를 보낼 수 있습니다.통합 패턴 : 여러 시스템에서받은 메시지 처리 방법을 동기화하는 방법
동일한 deviceId를 가진 모든 발신자로부터 모든 메시지를받지 않은 한 내 목표는 동일한 deviceId와 관련된 메시지 처리를 시작하지 않는 것입니다. 예를 들어
, 나는 3 개 시스템이있는 경우, 내 시스템에 메시지 전송 B와 C :
System A sends messageA1 with deviceId=1
System B sends messageB1 with deviceId=1
System C sends messageC1 with deviceId=3
System C sends messageC2 with deviceId=1 <--- here I should start processing of messageA1, messageB1 and messageC2 because they are having the same deviceID 1.
이 문제는 메시지 브로커 또는하여 내 시스템의 일부 동기화 메커니즘을 사용하여 해결되어야한다 스프링 통합/아파치 낙타와 같은 통합 프레임 워크?
서비스가 시스템 중 하나에서 동일한 deviceId를 사용하여 몇 개의 메시지를받는 경우 중요합니까? 별도의 메시지를 1 씩 처리 하시겠습니까? 예 (deviceId = 1) :'messageA1, messageA1, messageA1, messageC1, messageC1, messageB1' -> 프로세스 시작 – mgyongyosi
아니요 상관 없어요 ...중요한 것은 처리해야하는 데이터가 포함되어있어 3 개의 모든 메시지가 도착할 때 처리를 트리거하는 것입니다 –