라벨이 Spring Integration인 게시물 표시

Spring Integration 과 함께 - 실전편(2)

이미지
Spring Integration - Polling Example  이번 post 는 Spring Integration 이 외부 데이터를 가져오는 예제를 만든다. Schedule 을 정해서 주기적으로 데이터를 가져올 수 있어, 개인적인 데이터를 모을 때도 유용하게 쓸 수 있다. 개발환경 JDK : OpenJDK 11 Spring : 2.4.2 DB : h2 구조 환율 가져오는 Flow  환율을 일정한 주기로 Web 에서 가져온다. 가져온 환율을 DB 에 저장한다. 환율.  환율은 이 사이트 를 참조했다. 아래 URL 에서 데이터를 호출하면, 최신 환율 데이터를 EUR 기준으로 가져온다. 데이터 형식은 JSON이다. GET https://api.exchangeratesapi.io/latest DB Tables. Exchange Rate Table 구조 Exchange_rate_meta  Header 정보 역할을 한다. 환율일자, 환율수, 기준통화를 저장한다. 기준 통화는 EUR 이다.   exchange_rate 와 FK 관계를 가진다. 이번 FK 관계는 복잡한 연관관계가 필요없기 때문에, JPA 의 @CollectionTable 를 사용했다.  @Entity @Table ( name = "exchange_rate_meta" ) public class ExchangeRateMetaData { @Id @Column ( name = "exchange_date" ) private LocalDate date ; ...

Spring Integration 과 함께 - 실전편(1)

이미지
Spring Integration Example 학생 Text 파일을 DB 와 File 로 저장하는 예제   이전 post 는 Spring Integration의 간단한 개념을 살펴보았다. 이번에는 동작하는 프로그램을 만든다. Web 에서 전송한 데이터를 DB와 Local File로 저장한다. Web에서 전송한 Text 는 아래와 같다. 순서, 이름, 나이, 성별을 '|' 로 구분하고, 각 학생은 Enter 로 나눴다. 1 | 김철수 | 20 | MALE 2 | 이영희 | 39 | FEMALE 3 | 마이크 | 21 | UNKOWN  김철수는 등록에 성공한다. 이영희는 나이 때문에 실패한다. 마이크는 성별이 정확하지 않아 오류가 발생한다. 개발환경 JDK : OpenJDK 11 Spring : 2.4.2 DB : h2-1.4.199 구성요소(Component) Split  메시지를 분할해서 전송한다. 분할한 메시지는 다음 단계에서 1건 씩 처리한다. 예제에서 각 학생을 Enter 로 분할한다. Transformer  메시지의 내용을 추가/수정/삭제할 수 있는 구성요소다. Split 에서 분할한 메시지를 Student 객체로 바꾼다.  private Student transformToStudent ( String text ) { String [] tokens = text . split ( "\\|" ); String name = tokens [ 1 ]. trim (); Integer age = Integer . valueOf ( tokens [ 2 ]. trim ()); Student . Gender gender = ...

Spring Integration 과 함께 - 개념편

이미지
Spring Integration Spring Integration 카페 예제  EAI(Enterprise Application Integration) 에 대한 소개 자료를 접하면서, Spring Integration과 Apache Camel을 많이 들었다. 어떤 Framework을 살펴볼까...생각 중에 Spring을 공부 중이라 Spring Integration 문서를 읽었다. 나름 매력적으로 느껴져 정리 및 예제를 기록한다. 정의   Spring Integration 은 Spring 의 IoC와 EIP(Enterprise Integration Pattern)을 합쳐 만든 Framework 다. 그래서 Spring은 EIP의 구성 요소들을 구현했다. 비동기와 메세지(Message) 방식을 지원하며, 여러 통신 방식(FTP, Web, TCP...)을 구현한다.  여러 글과 개발하며 느낀 점을 기준으로 생각해봤다. 내가 생각한 이 장난감(?)은... 각 시스템이 데이터를 주고 받기 위한 표준 가이드 프로그램이다.  기업 내에는 여러 시스템들이 존재한다. 이들이 가진 데이터들은 서로 소통하지 않으면 가치가 없다. 반대로, 여러 시스템의 데이터를 합치면 업무 자동화나 새로운 비즈니스 기회를 찾을 수 있는 기회가 생긴다. 그래서 언제나 IT 현업들은 시스템 통합(System Integration)을 시도한다. 하지만 통합은 힘들다. 시스템들은 도입 혹은 구축 이유가 저마다 사정이 있어, 구축 언어와 통신 방법이 다르다.  각 시스템 별 다른 구축과 통신 방식  이런 문제를 개선하기 위해, 각 시스템의 중심에서 데이터들의 중재자 역할을 하는 시스템을 구상한다. 바로 Spring Integration같은 Framework이다. 중계를 통한 시스템 연결.   Spring Integration은 통신 방식과 데이터 표준화를 위해 가이드를 제안한다.  통신 방식의 경우, Spring Integra...