42장. 생산자 인터페이스


초록

이 장에서는 Apache Camel 구성 요소를 구현하는 데 중요한 단계인 Producer 인터페이스를 구현하는 방법을 설명합니다.

42.1. Producer 인터페이스

42.1.1. 개요

org.apache.camel.Producer 유형의 인스턴스는 경로의 대상 끝점을 나타냅니다. 생산자의 역할은 요청(메시지에서 )을 특정 물리적 엔드포인트에 전송하고 해당 응답(아웃 또는 Fault 메시지)을 수신하는 것입니다. Producer 오브젝트는 기본적으로 프로세서 체인의 끝에 표시되는 특수 종류의 프로세서입니다(경로와 동일). 그림 42.1. “생산자 Inheritance Hierarchy” 생산자의 상속 계층 구조를 표시합니다.

그림 42.1. 생산자 Inheritance Hierarchy

생산자 상속 계층

42.1.2. Producer 인터페이스

예 42.1. “생산자 인터페이스” org.apache.camel.Producer 인터페이스의 정의를 보여줍니다.

예 42.1. 생산자 인터페이스

package org.apache.camel;

public interface Producer extends Processor, Service, IsSingleton {

    Endpoint<E> getEndpoint();

    Exchange createExchange();

    Exchange createExchange(ExchangePattern pattern);

    Exchange createExchange(E exchange);
}

42.1.3. 생산자 메서드

Producer 인터페이스는 다음 방법을 정의합니다.

  • process()(프로세서에서 상속됨) - 가장 중요한 메서드입니다. 생산자는 기본적으로 교환 오브젝트를 다른 프로세서로 전달하는 대신 엔드포인트에 요청을 전송하는 특수 유형의 프로세서입니다. process() 메서드를 재정의하면 생산자가 관련 엔드포인트로 메시지를 보내고 수신하는 방법을 정의합니다.
  • getEndpoint() Cryostat-WITH parent endpoint 인스턴스에 대한 참조입니다.
  • createExchange() Cryostat-property overloaded 메서드는 Endpoint 인터페이스에 정의된 해당 메서드와 유사합니다. 일반적으로 이러한 메서드는 상위 끝점 인스턴스에 정의된 해당 메서드에 위임됩니다(기본적으로 DefaultEndpoint 클래스가 수행하는 사항임). 이러한 방법을 재정의해야 하는 경우도 있습니다.

42.1.4. 비동기 처리

프로듀서에서 교환 오브젝트를 처리하는 경우 일반적으로 메시지를 원격 대상으로 전송하고 response Cryostat- Cryostatcan을 기다리는 작업이 상당한 시간 동안 차단될 수 있습니다. 현재 스레드를 차단하지 않으려면 생산자를 비동기 프로세서 로 구현하도록 선택할 수 있습니다. 비동기 처리 패턴은 이전 프로세서를 생산자와 분리하여 process() 메서드가 지연 없이 반환되도록 합니다. 38.1.4절. “비동기 처리”을 참조하십시오.

생산자를 구현할 때 org.apache.camel.AsyncProcessor 인터페이스를 구현하여 비동기 처리 모델을 지원할 수 있습니다. 그 자체로는 비동기 처리 모델이 사용되는지 확인하는 것만으로는 충분하지 않습니다. 체인의 이전 프로세서가 process() 메서드의 비동기 버전을 호출하는 것도 필요합니다. AsyncProcessor 인터페이스의 정의는 예 42.2. “AsyncProcessor Interface” 에 표시됩니다.

예 42.2. AsyncProcessor Interface

package org.apache.camel;

public interface AsyncProcessor extends Processor {
    boolean process(Exchange exchange, AsyncCallback callback);
}

process() 메서드의 비동기 버전은 org.apache.camel.AsyncCallback 유형의 추가 인수인 콜백 을 사용합니다. 해당 AsyncCallback 인터페이스는 예 42.3. “AsyncCallback Interface” 에 표시된 대로 정의됩니다.

예 42.3. AsyncCallback Interface

package org.apache.camel;

public interface AsyncCallback {
    void done(boolean doneSynchronously);
}

AsyncProcessor.process() 의 호출자는 처리가 완료되었다는 알림을 수신하기 위해 AsyncCallback의 구현을 제공해야 합니다. AsyncCallback.done() 메서드는 처리가 동기적으로 수행되었는지 여부를 나타내는 부울 인수를 사용합니다. 일반적으로 플래그는 비동기 처리를 나타내는 false 입니다. 그러나 경우에 따라 생산자가 비동기적으로 처리되지 않는 것이 적절할 수 있습니다(요청을 받는 경우). 예를 들어 생산자가 교환 처리가 빠르게 완료된다는 것을 알고 있으면 동기적으로 처리를 수행하여 처리를 최적화할 수 있습니다. 이 경우 doneSynchronously 플래그를 true 로 설정해야 합니다.

42.1.5. ExchangeHelper 클래스

프로듀서를 구현할 때 org.apache.camel.util.ExchangeHelper 유틸리티 클래스에서 일부 메서드를 호출하는 것이 도움이 될 수 있습니다. ExchangeHelper 클래스에 대한 자세한 내용은 35.4절. “ExchangeHelper 클래스” 을 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.