8.7. 라우팅 슬립
8.7.1. 개요
그림 8.8. “라우팅 슬립 패턴” 에 표시된 라우팅 슬립 패턴을 사용하면 일련의 처리 단계를 통해 메시지를 연속으로 라우팅할 수 있습니다. 여기서 단계 시퀀스는 설계 시 알 수 없으며 각 메시지에 따라 다를 수 있습니다. 메시지가 전달되어야 하는 끝점 목록은 런타임에 Apache Camel이 읽고 즉시 파이프라인을 구성하기 위해 런타임에 읽는 헤더 필드( 슬립)에 저장됩니다.
그림 8.8. 라우팅 슬립 패턴
8.7.2. slip 헤더
라우팅 슬립은 사용자 정의 헤더에 나타납니다. 여기서 헤더 값은 엔드포인트 URI의 쉼표로 구분된 목록입니다. 예를 들어, 보안 작업의 시퀀스를 지정하는 라우팅 슬립은 다음과 같습니다.For example, a routing slip that specifies a sequence of security tasks finishesdecrypting, authenticating, and de-duplicating a message Cryostat- Cryostatmight look like the following:
cxf:bean:decrypt,cxf:bean:authenticate,cxf:bean:dedup
8.7.3. 현재 끝점 속성
Camel 2.5에서 라우팅 Slip는 미끄러짐에 따라 현재 엔드 포인트가 포함된 교환에 속성(Exchange.SLIP_ENDPOINT
)을 설정합니다. 이를 통해 교환이 슬립을 통해 얼마나 진행되었는지 확인할 수 있습니다.
8.7절. “라우팅 슬립” 는 사전에 슬립을 계산하므로 슬립은 한 번만 계산됩니다. slip on-the-fly 를 계산해야 하는 경우 대신 8.18절. “동적 라우터” 패턴을 사용합니다.
8.7.4. Java DSL 예
다음 경로는 direct:a
끝점에서 메시지를 가져오고 aRoutingSlipHeader
헤더에서 라우팅 슬립을 읽습니다.
from("direct:b").routingSlip("aRoutingSlipHeader");
헤더 이름을 문자열 리터럴 또는 표현식으로 지정할 수 있습니다.
routingSlip()
의 2-argument 양식을 사용하여 URI 구분자를 사용자 지정할 수도 있습니다. 다음 예제에서는 라우팅 분할에 aRoutingSlipHeader
헤더 키를 사용하는 경로를 정의하고 #
문자를 URI 구분 기호로 사용합니다.
from("direct:c").routingSlip("aRoutingSlipHeader", "#");
8.7.5. XML 구성 예
다음 예제에서는 XML로 동일한 경로를 구성하는 방법을 보여줍니다.
<camelContext id="buildRoutingSlip" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="direct:c"/> <routingSlip uriDelimiter="#"> <headerName>aRoutingSlipHeader</headerName> </routingSlip> </route> </camelContext>
8.7.6. 잘못된 끝점 무시
8.7절. “라우팅 슬립” 에서는 8.3절. “수신자 목록” 패턴에서도 지원하는 ignoreInvalidEndpoints
를 지원합니다. 이를 사용하여 유효하지 않은 엔드포인트를 건너뛸 수 있습니다. 예를 들면 다음과 같습니다.
from("direct:a").routingSlip("myHeader").ignoreInvalidEndpoints();
Spring XML에서 이 기능은 < routingSlip
> 태그에서 ignoreInvalidEndpoints
속성을 설정하여 활성화됩니다.
<route> <from uri="direct:a"/> <routingSlip ignoreInvalidEndpoints="true"> <headerName>myHeader</headerName> </routingSlip> </route>
myHeader
에 두 개의 끝점인 direct:foo,xxx:bar
가 포함된 경우를 고려하십시오. 첫 번째 끝점이 유효하고 작동합니다. 두 번째는 유효하지 않으므로 무시됩니다. 잘못된 엔드포인트가 발생할 때마다 INFO
수준에서 Apache Camel 로그를 기록합니다.
8.7.7. 옵션
routingSlip
DSL 명령은 다음 옵션을 지원합니다.
이름 | 기본값 | 설명 |
|
| Expression에서 여러 끝점을 반환한 경우 사용되는 구분 기호입니다. |
|
| 엔드포인트 uri를 확인할 수 없는 경우 무시해야 합니다. 그렇지 않으면 Camel에서 엔드포인트 uri가 유효하지 않음을 나타내는 예외가 throw됩니다. |
|
| Camel 2.13.1/2.12.4: 라우팅 슬립에서 재사용할 생산자를 캐시하는 ProducerCache 의 캐시 크기를 구성할 수 있습니다. 기본적으로는 기본적으로 0인 기본 캐시 크기를 사용합니다. 값을 -1로 설정하면 캐시를 모두 해제할 수 있습니다. |