34장. 메시지 형식 이해


초록

Apache Camel로 프로그래밍을 시작하기 전에 메시지와 메시지 교환을 모델링하는 방법을 명확하게 이해해야 합니다. Apache Camel은 많은 메시지 형식을 처리할 수 있으므로 기본 메시지 유형은 추상 형식으로 설계되었습니다. Apache Camel은 메시지 본문 및 메시지 헤더에 따라 데이터 형식에 액세스하고 변환하는 데 필요한 API를 제공합니다.

34.1. 교환

34.1.1. 개요

교환 오브젝트 는 수신된 메시지를 캡슐화하고 연결된 메타데이터(배치 속성포함)를 저장하는 래퍼입니다. 또한 현재 메시지가 생산자 엔드포인트에 디스패치되는 경우 교환은 응답을 유지할 임시 슬롯( Out 메시지)을 제공합니다.

Apache Camel의 교환의 중요한 기능은 지연 메시지 생성을 지원한다는 것입니다. 이는 메시지에 대한 명시적 액세스가 필요하지 않은 경로의 경우 상당한 최적화를 제공할 수 있습니다.

그림 34.1. 경로를 통해 오브젝트 전달 교환

경로를 통해 전달되는 개체 교환

그림 34.1. “경로를 통해 오브젝트 전달 교환” 경로를 통과하는 교환 오브젝트를 표시합니다. 경로 컨텍스트에서 교환 오브젝트는 Processor.process() 메서드의 인수로 전달됩니다. 즉, 교환 오브젝트는 소스 끝점, 대상 끝점 및 그 사이의 모든 프로세서에 직접 액세스할 수 있습니다.

34.1.2. 교환 인터페이스

org.apache.camel.Exchange 인터페이스는 예 34.1. “교환 방법” 와 같이 InOut 메시지에 액세스하는 방법을 정의합니다.

예 34.1. 교환 방법

// Access the In message
Message getIn();
void    setIn(Message in);

// Access the Out message (if any)
Message getOut();
void    setOut(Message out);
boolean hasOut();

// Access the exchange ID
String  getExchangeId();
void    setExchangeId(String id);

교환 인터페이스의 방법에 대한 자세한 내용은 43.1절. “교환 인터페이스” 을 참조하십시오.

34.1.3. 메시지 생성 지연

Apache Camel은 In,OutFault 메시지 지연 생성을 지원합니다. 즉, getIn() 또는 getOut()을 호출하여 액세스하려고 할 때까지 메시지 인스턴스가 생성되지 않습니다. lazy 메시지 생성 의미 체계는 org.apache.camel.impl.DefaultExchange 클래스에 의해 구현됩니다.

no-argument 접근자(getIn() 또는 getOut()) 중 하나를 호출하거나 부울 인수를 true (즉, getIn(true) 또는 getOut(true)로 호출하면 기본 메서드 구현에서 새 메시지 인스턴스를 생성합니다.

false (즉, getIn(false) 또는 getOut(false)와 같은 부울 인수를 사용하여 접근자를 호출하면 기본 메서드 구현에서 현재 메시지 값을 반환합니다.[1]

34.1.4. 교환 ID 생성 지연

Apache Camel은 교환 ID의 지연 생성을 지원합니다. 모든 교환에서 getExchangeId() 를 호출하여 해당 교환 인스턴스에 대한 고유 ID를 가져올 수 있지만 실제로 메서드를 호출하는 경우에만 ID가 생성됩니다. 이 메서드의 DefaultExchange.getExchangeId() 구현은 ID 생성을 CamelContext 에 등록된 UUID 생성기에 위임합니다.

CamelContext 에 UUID 생성기를 등록하는 방법에 대한 자세한 내용은 34.4절. “내장된 UUID 생성기” 을 참조하십시오.



[1] 활성 메서드가 없으면 반환된 값은 null 입니다.
Red Hat logoGithubRedditYoutube

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.