[Spring Integration] Overview

DaeHoon·2022년 1월 26일
1

개요

  • Spring Integration는 <Enterprise Integration Patterns 2003>에서 보여준 대부분의 통합 패턴을 사용할 수 있게 구현한 것
  • 각 Integration 패턴은 하나의 Component로 구현되고 이를 통해 파이프라인으로 메시지가 데이터를 운반한다.
  • Spring Integration을 사용해서 데이터가 이동하는 파이프 라인으로 다양한 컴포넌트들을 조립할 수 있다.

Components

  • 메시징 시스템은 일반적으로 유사한 "파이프 앤 필터" 모델로 구성
  • 필터는 메시지를 생성하거나 소비할 수 있는 모든 Components를 말한다.
  • 파이프는 필터들 사이에 메시지를 전송하여 Component들 간의 loose coupling을 유지한다.

Message

  • 페이로드와 헤더로 구성되어 있음.
  • 페이로드는 어느 타입이 들어올 수 있으며 헤더에는 ID, 타임스탬프 등 일반적으로 필요한 정보가 들어 있다.
  • 예를 들어, 수신된 파일에서 메시지를 작성할 때 파일 이름은 다운스트림 컴포넌트가 접근할 수 있도록 헤더에 저장된다.

Message Channel

  • 파이프 앤 필터 패턴에서 파이프의 역할. Producer는 채널에 메시지를 보내고 Consumer는 채널로부터 메시지를 받는다.
  • 메시지 채널은 Messaging Conponent를 분리하고 메시지를 가져가고 모니터링하는데 이점을 제공함.
  • 메시지 채널은 point to point 또는 pub-sub로 구성되어 있고 Spring Integration은 이 두개를 다 지원함.
  • poller를 통해 메시지에 버퍼링을 할 수 있음. 이를 통해 메시지의 Consumer의 과부화를 막을 수 있다.

Message Endpoint

  • Spring Integration의 주요 목표 중 하나는 IOC를 통해 엔터프라이즈 통합 솔루션 개발을 간소화 하는 것. 예를 들면 Producer와 Consumer를 직접 구현할 필요가 없고, 메시지를 구축하거나 메시지 채널에서 송수신 작업을 직접 할 필요가 없다.
  • 대신 객체를 기반으로 특정 도메인 모델에 집중해야 한다. 그런 다음에 선언된 Configration을 통해 도메인별 코드를 Spring Integration에서 제공하는 Messaging 인프라에 "연결"할 수 있다. 이러한 연결을 담당하는 Component가 Message Endpoints.
  • 비즈니스 로직에서의 Message Endpoint의 역할은 인바운드 요청을 서비스 계층 호출로 변환한 다음 서비스 계층 반환 값을 아웃바운드 응답으로 변환하는 전용 계층이다.

Message Endpoints

  • 파이프 앤 필터 패턴에서 필터의 역할.
  • 프로그램 코드를 메시지 객체나 메시지 채널에 대한 인식이 없게 연결한다. MVC 패턴에서 Controller의 역할과 유사
  • 컨트롤러가 URL 패턴에 매핑되는 것처럼 Message Endpoint도 메시지 채널에 매핑된다. 둘다 프로그램 코드를 인프라에서 격리하는 것이 유사점.

Message Transformer

  • 메시지의 내용 또는 구조를 변환하고 그리고 수정된 메시지를 반환하는 역할을 한다.
  • 보통 메시지의 페이로드를 한 형식에서 다른 형식 (예를 들면 XML에서 java.lang.String으로) 변환하는 역할을 맡는다.
  • 메시지의 헤더 값을 추가,제거 또는 수정할 수 있음.

Message Filter

  • output channel에 메시지를 전달해야 하는지의 여부를 결정
  • 특정한 페이로드 내용의 타입, property 값, 헤더의 존재 또는 다른 조건을 검사하는 boolean test를 필요로 함.
  • 메시지가 승인되면 output channel에 전송됨. 그렇지 않으면 삭제(또는 예외)된다.
  • 종종 pub-sub 패턴에서 사용되며, 여기서 consumer가 동일한 메시지를 받고 처리할 메시지 포맷을 정의하기 위해 사용된다.
  • 파이프-필터 패턴의 필터와 위의 필터는 다른 개념이다.

Message Router

  • 메시지를 수신할 채널을 결정하는 역할
  • 메시지 내용 또는 메시지 헤더에서 사용할 수 있는 메타데이터에 기반해 수신할 채널을 결정한다.

Splitter

  • input channal로 부터 메시지를 수신하고 그 메시지를 여러개의 메시지로 분할하여 각각의 메시지를 output channal로 보내는 역할
  • 복합된 페이로드를 나누어 보낼 때 주로 사용된다.

Aggregator

  • 여러 메시지를 수신하여 단일 메시지로 결합하는 역할
  • 파이프라인의 downstream에서 주로 사용

Service Activator

  • 서비스 인스턴스를 메시징 시스템에 연결하기 위한 엔드포인트
  • 인풋 채널을 구성해야 하며 호출할 서비스가 값을 반환하는 경우 아웃풋 채널(선택사항)도 제공

Channel Adapter

  • 메시지 채널을 다른 시스템이나 transport에 연결하는 엔드포인트
  • 일반적으로 메시지와 다른 시스템(파일, HTTP 요청, JMS 메시지)에서 수신되거나 다른 시스템으로 전송되는 모든 객체 또는 자원 간의 매핑을 수행
  • inbound channel adapter endpoint가 MessageChannel과 연결
  • outbound channel adapter endpoint는 MessageChannel을 Target에 연결한다.

참고 자료 : https://docs.spring.io/spring-integration/reference/html/overview.html

profile
평범한 백엔드 개발자

0개의 댓글