8.8. Throttler


8.8.1. 개요

throttler 는 들어오는 메시지의 흐름 속도를 제한하는 프로세서입니다. 이 패턴을 사용하여 대상 끝점이 과부하되지 않도록 보호할 수 있습니다. Apache Camel에서는 throttle() Java DSL 명령을 사용하여 throttler 패턴을 구현할 수 있습니다.

8.8.2. Java DSL 예

흐름 속도를 초당 100개 메시지로 제한하려면 다음과 같이 경로를 정의합니다.

from("seda:a").throttle(100).to("seda:b");

필요한 경우 timePeriodMillis() DSL 명령을 사용하여 흐름 속도를 제어하는 기간을 사용자 지정할 수 있습니다. 예를 들어 흐름 속도를 30000밀리초당 3개의 메시지로 제한하려면 다음과 같이 경로를 정의합니다.

from("seda:a").throttle(3).timePeriodMillis(30000).to("mock:result");

8.8.3. XML 구성 예

다음 예제에서는 XML로 이전 경로를 구성하는 방법을 보여줍니다.

<camelContext id="throttleRoute" xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="seda:a"/>
    <!-- throttle 3 messages per 30 sec -->
    <throttle timePeriodMillis="30000">
      <constant>3</constant>
      <to uri="mock:result"/>
    </throttle>
  </route>
</camelContext>

8.8.4. 기간당 최대 요청 동적으로 변경

사용 가능한 Camel 2.8 since we use an Expression, you can adjust this value at runtime, for example you can provide a header with the value. 런타임 Camel에서 표현식을 평가하고 결과를 java.lang.Long 유형으로 변환합니다. 아래 예제에서는 메시지의 헤더를 사용하여 기간당 최대 요청을 결정합니다. 헤더가 없으면 8.8절. “Throttler” 에서 이전 값을 사용합니다. 따라서 값을 변경할 때만 헤더를 제공할 수 있습니다.

<camelContext id="throttleRoute" xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="direct:expressionHeader"/>
    <throttle timePeriodMillis="500">
      <!-- use a header to determine how many messages to throttle per 0.5 sec -->
      <header>throttleValue</header>
      <to uri="mock:result"/>
    </throttle>
  </route>
</camelContext>

8.8.5. 비동기 지연

throttler는 비차단 비동기 지연 을 활성화할 수 있습니다. 즉, Apache Camel에서 향후 실행될 작업을 예약합니다. 이 작업은 경로의 마지막 부분을 처리합니다( throttler 이후). 이를 통해 호출자 스레드는 수신되는 메시지를 차단 해제하고 추가로 서비스할 수 있습니다. 예를 들면 다음과 같습니다.

from("seda:a").throttle(100).asyncDelayed().to("seda:b");
참고

Camel 2.17에서 Throttler는 메시지 흐름을 개선하는 기간 동안 롤링 창을 사용합니다. 그러나 스로틀러의 성능이 향상됩니다.

8.8.6. 옵션

throttle DSL 명령은 다음 옵션을 지원합니다.

이름

기본값

설명

maximumRequestsPerPeriod

 

throttle까지의 기간당 최대 요청 수입니다. 이 옵션을 제공해야 하며 양수를 제공해야 합니다. Camel 2.8 이후의 XML DSL에서 이 옵션은 속성 대신 Expression을 사용하여 구성됩니다.

timePeriodMillis

1000

제한자가 최대 maximumRequestsPeriod 메시지 수를 허용하는 시간(밀리초 )입니다.

asyncDelayed

false

Camel 2.4: 활성화하면 예약된 스레드 풀을 사용하여 지연되는 모든 메시지가 비동기적으로 수행됩니다.

executorServiceRef

 

Camel 2.4: asyncDelay 가 활성화된 경우 사용할 사용자 정의 스레드 풀을 나타냅니다.

callerRunsWhenRejected

true

Camel 2.4: asyncDelayed 가 활성화된 경우 사용됩니다. 스레드 풀이 작업을 거부한 경우 호출자 스레드가 작업을 실행해야 하는지 여부를 제어합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.