8.16. loop
8.16.1. loop 링크 복사링크가 클립보드에 복사되었습니다!
반복문 패턴을 사용하면 메시지를 여러 번 처리할 수 있습니다. 이는 주로 테스트에 사용됩니다.
기본적으로 루프는 루프 전체에서 동일한 교환을 사용합니다. 이전 반복의 결과는 다음에 사용됩니다( 5.4절. “파이프 및 필터”참조). Camel 2.8 의 경우 대신 복사 모드를 활성화할 수 있습니다. 자세한 내용은 options 표를 참조하십시오.
8.16.2. 속성 교환 링크 복사링크가 클립보드에 복사되었습니다!
각 루프 반복에서 두 개의 교환 속성이 설정되며 루프에 포함된 모든 프로세서에서 선택적으로 읽을 수 있습니다.
속성 | 설명 |
---|---|
| Apache Camel 2.0: 총 루프 수 |
| Apache Camel 2.0: 현재 반복(0 기반)의 인덱스 |
8.16.3. Java DSL 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 direct:x
끝점에서 요청을 가져온 다음 메시지를 mock:result
로 반복적으로 전송하는 방법을 보여줍니다. 루프 반복 수는 loop()
에 대한 인수로 지정되거나 런타임에 표현식을 평가하여 지정됩니다. 여기서 표현식은 int
(또는 RuntimeCamelException
이 throw됨)로 평가 되어야 합니다.
다음 예제에서는 루프 수를 상수로 전달합니다.
from("direct:a").loop(8).to("mock:result");
from("direct:a").loop(8).to("mock:result");
다음 예제에서는 간단한 표현식을 평가하여 루프 수를 결정합니다.
from("direct:b").loop(header("loop")).to("mock:result");
from("direct:b").loop(header("loop")).to("mock:result");
다음 예제에서는 Cryostat 표현식을 평가하여 루프 수를 결정합니다.
from("direct:c").loop().xpath("/hello/@times").to("mock:result");
from("direct:c").loop().xpath("/hello/@times").to("mock:result");
8.16.4. XML 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
Spring XML에서 동일한 경로를 구성할 수 있습니다.
다음 예제에서는 루프 수를 상수로 전달합니다.
다음 예제에서는 간단한 표현식을 평가하여 루프 수를 결정합니다.
8.16.5. 복사 모드 사용 링크 복사링크가 클립보드에 복사되었습니다!
이제 문자 A가 포함된 direct:start
끝점에 메시지를 보냅니다. 이 경로를 처리하는 출력은 각 mock:loop
끝점이 메시지로 AB를 수신합니다.
그러나 복사 모드를 활성화 하지 않으면 mock:loop
는 AB, A Cryostat, AB Cryostat 메시지를 수신합니다.
복사 모드에서 XML DSL의 동등한 예는 다음과 같습니다.
8.16.6. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
loop
DSL 명령은 다음 옵션을 지원합니다.
이름 | 기본값 | 설명 |
|
|
Camel 2.8: 복사 모드 사용 여부입니다. |
8.16.7. Do While Cryostat 링크 복사링크가 클립보드에 복사되었습니다!
do while
루프를 사용하여 조건이 충족될 때까지 루프를 수행할 수 있습니다. 조건은 true 또는 false입니다.
DSL에서 명령은 os DoWhile
입니다. 다음 예제에서는 메시지 본문 길이가 5자 이하가 될 때까지 루프를 수행합니다.
XML에서 명령은 loop doWhile
입니다. 다음 예제에서는 메시지 본문 길이가 5자 이하가 될 때까지 루프를 수행합니다.