8.9. Delayer
8.9.1. 개요 링크 복사링크가 클립보드에 복사되었습니다!
지연은 들어오는 메시지에 상대 시간 지연을 적용할 수 있는 프로세서입니다.
8.9.2. Java DSL 예 링크 복사링크가 클립보드에 복사되었습니다!
delay()
명령을 사용하여 들어오는 메시지에 상대 시간 지연을 밀리초 단위로 추가할 수 있습니다. 예를 들어 다음 경로는 들어오는 모든 메시지를 2초로 지연합니다.
from("seda:a").delay(2000).to("mock:result");
from("seda:a").delay(2000).to("mock:result");
또는 표현식을 사용하여 시간 지연을 지정할 수 있습니다.
from("seda:a").delay(header("MyDelay")).to("mock:result");
from("seda:a").delay(header("MyDelay")).to("mock:result");
delay()
를 따르는 DSL 명령은 delay()
의 하위 항목으로 해석됩니다. 따라서 일부 컨텍스트에서 end()
명령을 삽입하여 delay()의 하위 항목을 종료할 필요가 있습니다. 예를 들어 delay()
가 onException()
절 내에 표시되면 다음과 같이 종료합니다.
8.9.3. XML 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 XML DSL의 지연을 보여줍니다.
8.9.4. 사용자 정의 지연 생성 링크 복사링크가 클립보드에 복사되었습니다!
sum과 결합된 표현식을 사용하여 다음과 같이 지연을 확인할 수 있습니다.
from("activemq:foo"). delay().expression().method("someBean", "computeDelay"). to("activemq:bar");
from("activemq:foo").
delay().expression().method("someBean", "computeDelay").
to("activemq:bar");
다음처럼 Quarkus 클래스를 정의할 수 있는 위치는 다음과 같습니다.
8.9.5. 비동기 지연 링크 복사링크가 클립보드에 복사되었습니다!
지연 시간이 비동기 지연을 사용하도록 할 수 있습니다. 즉, Apache Camel에서 향후 실행될 작업을 예약합니다. 이 작업은 경로의 마지막 부분을 처리합니다(마운트 후). 이를 통해 호출자 스레드는 수신되는 메시지를 차단 해제하고 추가로 서비스할 수 있습니다. 예를 들면 다음과 같습니다.
from("activemq:queue:foo") .delay(1000) .asyncDelayed() .to("activemq:aDelayedQueue");
from("activemq:queue:foo")
.delay(1000)
.asyncDelayed()
.to("activemq:aDelayedQueue");
다음과 같이 XML DSL로 동일한 경로를 작성할 수 있습니다.
8.9.6. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
지연기 패턴은 다음 옵션을 지원합니다.
이름 | 기본값 | 설명 |
|
| Camel 2.4: 활성화된 경우 예약된 스레드 풀을 사용하여 지연된 메시지가 비동기적으로 수행됩니다. |
|
Camel 2.4: | |
|
|
Camel 2.4: |