2017-09-15 5 views
1

건축 설계 관련 질문이 있습니다. 우리 회사는 최근 사례 관리를 위해 COTS (.NET 기반 제품)를 가져 왔습니다. 이 제품에는 정교한 통합 모듈이있어 모든 사용자 작업에서 완전한 정보 정보 XML을 MQ로 전송합니다. 각 XML 요소에는 Add, Edit & 삭제 플래그가있어 어떤 요소가 변경되었는지 알 수 있습니다.동적 클라이언트와 통합

이러한 이벤트가 들어올 때이를 순차적으로 처리하고 변경된 사항을 조건으로 여러 외부 파트너에게 보내는 응용 프로그램을 작성해야합니다. 각 외부 파트너와의 인터페이스는 필요한 데이터, 표현 (XML, String, json 등) 및 프로토콜 (SOAP, REST, MQ, DB 호출 등) 측면에서 뚜렷합니다.

누군가가 이와 같은 시스템을 설계하고 어떤 기술을 사용할 수 있을지에 대한 제안 사항이 있습니까? (FYI, 우리의 기존 기술 스택 Java/JEE, Weblogic).

추신. 내가 가진 주요 문제는 파트너 중 하나가 다운 된 경우 다른 파트너를 다시 붙잡아서는 안된다는 것입니다. 동시에 파트너는 단일 알림을 잃어 버려서는 안됩니다.

감사합니다.

답변

1

가능한 방법은 :

enter image description here

  • COTS는 메시지 큐에 응용 프로그램 이벤트에 대한 메시지를 넣어.
  • 메시지 생성기 구성 요소는 메시지 큐를 수신하고 현재 알려진 파트너에 대해 파트너 DB에 쿼리합니다. 각 COTS 메시지에 대해 각 파트너에 대해 발생한 일을 알리는 이벤트 메시지가 생성됩니다. 이벤트에는 "배달 됨"플래그도 있습니다. 따라서 기본적으로 COTS로 채워진 메시지 큐를 각 파트너에 대해 하나씩 N 개의 메시지 큐로 변환합니다. 이벤트는 변경 불가능한 객체 여야합니다. 관계형 DB 또는 NoSQL DB에 저장할 수 있습니다 (그림의 "메시지 DB").
  • N 이하의 엔드 포인트 구성 요소가 응용 프로그램 서버 내에서 실행됩니다. 요청이 도착하면 공통 구성 요소 (그림의 "Common Data Retrieval Concerns")에 새 메시지를 요청합니다. 공통 구성 요소는 메시지 DB를 쿼리하고 메시지를 Java 객체 목록으로 넘겨주고 끝점 구성 요소는 직렬화를 염려합니다. 공통 구성 요소는 파트너 DB의 정보를 사용하여 권한 부여를 고려할 수도 있습니다.

주의 : 게시로 공통 구성 요소가 전용 플래그 메시지, 그들은 성공적으로 전달 된해야합니다. 파트너 구성 요소에서 오는 응답을 기다리는 이벤트가 발생할 수 있습니다. 프로세스 중에 트랜잭션 atomicy를 보장 할 수 없으므로 파트너 클라이언트는 복제본에 대해 견고해야합니다. 귀하의 서버 소프트웨어뿐만 아니라 각 이벤트에 대한 메시지 ID (UUID)를 관리한다 각 클라이언트 :

  • 당신의 임무는 이벤트 메시지

  • 의 일을마다 고유 ID를 생성 걱정하는 것입니다 귀하의 파트너는 특정 ID로 이미 관중을 처리했는지 확인하기 위해 조회 테이블을 유지 관리하고 있습니다.