5.3. 메시지 끝점

5.3.1. 개요

메시지 끝점 은 애플리케이션과 메시징 시스템 간의 인터페이스입니다. 그림 5.3. “메시지 끝점 패턴” 에 표시된 대로 보낸 사람 끝점을 사용할 수 있습니다. 발신자 끝점은 메시지 전송을 담당하는 프록시 또는 서비스 소비자이며, 메시지 수신을 담당하는 끝점 또는 서비스 끝점이라고도 하는 수신자 끝점 있을 수 있습니다.

그림 5.3. 메시지 끝점 패턴

메시지 끝점 패턴

5.3.2. 끝점 유형

Apache Camel은 두 가지 기본 유형의 엔드포인트를 정의합니다.

  • 소비자 끝점 의 시작 부분에서 Apache Camel 경로가 표시되고 들어오는 채널( 수신 끝점과 동일)에서 In 메시지를 읽습니다.
  • 프로듀서 끝점 Cryostat-ition - Apache Camel 경로가 끝날 때 전달되고 발신 채널( 전송 끝점과 동일)에 In 메시지를 씁니다. 여러 생산자 엔드포인트가 있는 경로를 정의할 수 있습니다.

5.3.3. 엔드포인트 URI

Apache Camel에서 엔드포인트는 일반적으로 다음과 같은 종류의 데이터를 캡슐화하는 엔드포인트 URI 로 표시됩니다.

  • 소비자 끝점에 대한 엔드포인트 URI (예: 발신자가 연결할 수 있는 서비스를 노출하는 경우) 특정 위치 알림을 받습니다. 또는 URI에서 메시지 큐와 같은 메시지 소스를 지정할 수 있습니다. 엔드포인트 URI에는 엔드포인트를 구성하는 설정이 포함될 수 있습니다.
  • 생산자 엔드포인트에 대한 엔드포인트 URI Cryostat- Cryostat에는 메시지를 보낼 위치에 대한 세부 정보가 포함되어 있으며 엔드포인트를 구성하는 설정이 포함됩니다. 경우에 따라 URI는 원격 수신자 끝점의 위치를 지정합니다. 다른 경우 대상에는 대기열 이름과 같은 추상 형식이 있을 수 있습니다.

Apache Camel의 엔드포인트 URI에는 다음과 같은 일반적인 형식이 있습니다.

ComponentPrefix:ComponentSpecificURI

여기서 ComponentPrefix 는 특정 Apache Camel 구성 요소를 식별하는 URI 접두사입니다(지원되는 모든 구성 요소에 대한 자세한 내용은 Apache Camel 구성 요소 참조 참조 ). URI의 나머지 부분인 ComponentSpecificURI 에는 특정 구성 요소에서 정의한 구문이 있습니다. 예를 들어, Foo.Bar JMS 큐에 연결하려면 다음과 같이 엔드포인트 URI를 정의할 수 있습니다.

jms:Foo.Bar

소비자 끝점인 file://local/router/messages/foo 를 생산자 끝점에 직접 연결하는 경로를 정의하려면 jms:Foo.Bar 를 사용하여 다음 Java DSL 조각을 사용할 수 있습니다.

from("file://local/router/messages/foo").to("jms:Foo.Bar");

또는 다음과 같이 XML로 동일한 경로를 정의할 수 있습니다.

<camelContext id="CamelContextID" xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="file://local/router/messages/foo"/>
    <to uri="jms:Foo.Bar"/>
  </route>
</camelContext>

5.3.4. 동적 대상

& lt;toD > 매개변수를 사용하면 서로 연결된 하나 이상의 표현식을 사용하여 동적으로 계산된 엔드포인트에 메시지를 보낼 수 있습니다.

기본적으로 Simple 언어는 엔드포인트를 계산하는 데 사용됩니다. 다음 예제에서는 헤더에 의해 정의된 엔드포인트에 메시지를 보냅니다.

<route>
  <from uri="direct:start"/>
  <toD uri="${header.foo}"/>
</route>

Java DSL에서 동일한 명령의 형식은 다음과 같습니다.

from("direct:start")
  .toD("${header.foo}");

다음 예와 같이 URI 앞에 리터럴 접두사를 지정할 수도 있습니다.

<route>
  <from uri="direct:start"/>
  <toD uri="mock:${header.foo}"/>
</route>

Java DSL에서 동일한 명령의 형식은 다음과 같습니다.

from("direct:start")
  .toD("mock:${header.foo}");

위의 예에서 header.foo의 값이 주황색 인 경우 URI는 mock:orange 로 확인됩니다.

Simple 이외의 언어를 사용하려면 language: 매개변수를 정의해야 합니다. II 부. 라우팅 표현식 및 서술자 언어을 참조하십시오.

다른 언어를 사용하는 형식은 URI에서 language : language:language: 를 사용하는 것입니다. 예를 들어 Xpath를 사용하려면 다음 형식을 사용합니다.

<route>
  <from uri="direct:start"/>
  <toD uri="language:xpath:/order/@uri/">
</route>

다음은 Java DSL과 동일한 예입니다.

from("direct:start")
  .toD("language:xpath:/order/@uri");

language: 를 지정하지 않으면 끝점은 구성 요소 이름입니다. 경우에 따라 구성 요소와 언어의 이름이 xquery와 같은 경우가 있습니다.

+ 기호를 사용하여 여러 언어를 연결할 수 있습니다. 아래 예제에서 URI는 Simple 및 Xpath 언어의 조합입니다. Simple 가 기본값이므로 언어를 정의할 필요가 없습니다. + 기호가 Xpath 명령 후 언어:xpath 로 표시됩니다.

<route>
  <from uri="direct:start"/>
  <toD uri="jms:${header.base}+language:xpath:/order/@id"/>
</route>

Java DSL에서 형식은 다음과 같습니다.

from("direct:start")
  .toD("jms:${header.base}+language:xpath:/order/@id");

한 번에 많은 언어를 연결하고 각각 + 와 분리하고 언어 이름. language 로 각 언어를 지정할 수 있습니다.

다음 옵션을 toD 로 사용할 수 있습니다.

이름

기본값

설명

uri

 

필수: 사용할 URI입니다.

패턴

 

엔드포인트로 보낼 때 사용할 특정 교환 패턴을 설정합니다. 원래 MEP는 나중에 다시 설정됩니다.

cacheSize

 

재사용을 위해 생산자를 캐시하는 ProducerCache 의 캐시 크기를 구성합니다. 기본 캐시 크기는 1000이며 다른 값이 지정되지 않은 경우 사용됩니다. 값을 -1로 설정하면 캐시가 완전히 꺼집니다.

ignoreInvalidEndpoint

false

확인할 수 없는 엔드포인트 URI를 무시할지 여부를 지정합니다. 비활성화된 경우 Camel에서 잘못된 엔드포인트 URI를 식별하는 예외가 발생합니다.