180.6. 자체 Camel Code에 Cryostat 사용


180.6.1. 자체 관리되는 엔드 포인트 등록

Camel 2.0에서 사용 가능:
을 사용하여 자체 엔드포인트를 Spring 관리 주석 @ManagedResource 로 분리하여 Camel Cryostat Server 에 등록할 수 있으므로 Cryostat를 사용하여 사용자 지정 Cryostat에 액세스할 수 있습니다.

참고

Camel 2.1 에서는 끝점 이외의 사항을 적용하도록 변경했지만 org.apache.camel.spi.ManagementAware 도 구현해야 합니다. 나중에 이에 대해 자세히 알아보십시오.

예를 들어, 관리할 몇 가지 옵션을 정의하는 다음 사용자 지정 끝점이 있습니다.

@ManagedResource(description = "Our custom managed endpoint")
public class CustomEndpoint extends MockEndpoint implements ManagementAware<CustomEndpoint> {

    public CustomEndpoint(final String endpointUri, final Component component) {
        super(endpointUri, component);
    }

    public Object getManagedObject(CustomEndpoint object) {
        return this;
    }

    public boolean isSingleton() {
        return true;
    }

    protected String createEndpointUri() {
        return "custom";
    }

    @ManagedAttribute
    public String getFoo() {
        return "bar";
    }

    @ManagedAttribute
    public String getEndpointUri() {
        return super.getEndpointUri();
    }
}

Camel 2.9 에서 org.apache.camel.api.management 패키지에서 @ManagedResource,@ManagedAttribute@ManagedOperation 을 사용하는 것이 좋습니다. 이렇게 하면 사용자 정의 코드가 Spring JAR에 의존하지 않습니다.

180.6.2. 자체 관리 서비스 프로그래밍

Camel 2.1 사용 가능

Camel은 이제 관리를 위해 서비스를 등록할 때 자체 Cryostat를 사용하도록 제공합니다. 즉, 예를 들어 사용자 지정 Camel 구성 요소를 개발하고 엔드포인트, 소비자 및 생산자 등에 대해 Cryostat를 노출하도록 할 수 있습니다. 해야 할 일은 org.apache.camel.spi.ManagementAware 인터페이스를 구현하고 Camel이 사용할 관리 오브젝트를 반환하는 것입니다.

이제 오쉬의 API가 매우 혼란 스럽고 무의미하다고 생각하기 전에, 그런 다음 올바른 것입니다. 또한 Red Hat Spring의 운용을 통해 기존 8080에서 관리하는데 사용할 수 있는 다양한 주석을 생성했습니다. 즉, 종종 이를 사용하고 ManagementAware 인터페이스의 getManagedObject 에서 값을 반환합니다. 예를 들어 CustomEndpoint 를 사용하여 위의 코드 예제를 참조하십시오.

이제 Camel 2.1 에서는 Camel이 관리용으로 등록하는 모든 개체에 대해 이 작업을 수행할 수 있지만 전부는 아닙니다.

ManagementAware 인터페이스를 구현하지 않는 서비스의 경우 Camel은 아래 표에 정의된 대로 기본 래퍼를 사용하는 대신 대체됩니다.

Expand
유형Cryostat 래퍼

CamelContext

ManagedCamelContext

Component

ManagedComponent

endpoint

ManagedEndpoint

소비자

ManagedConsumer

생산자

ManagedProducer

경로

ManagedRoute

프로세서

ManagedProcessor

Tracer

ManagedTracer

Service

ManagedService

다음과 같은 특수 유형에 대한 몇 가지 확장 래퍼가 있습니다.

Expand
유형Cryostat 래퍼

ScheduledPollConsumer

ManagedScheduledPollConsumer

BrowsableEndpoint

ManagedBrowseableEndpoint

Throttler

ManagedThrottler

Delayer

ManagedDelayer

SendProcessor

ManagedSendProcessor

그리고 앞으로 더 많은 EIP 패턴에 대한 래퍼를 추가할 예정입니다.

180.6.3. ManagementNamingStrategy

Camel 2.1 사용 가능

Camel은 org.apache.camel.spi.ManagementNamingStrategy 를 통해 전략 이름 지정에 대한 플러그형 API를 제공합니다. 기본 구현은 모든 Cryostat가 등록된 이름을 계산하는 데 사용됩니다.

180.6.4. 관리 이름 지정 패턴

Camel 2.10에서 사용 가능

Camel 2.10 이후부터는 더 쉽게 이름 지정 패턴을 구성할 수 있었습니다. 패턴은 도메인 이름 뒤에 ObjectName 키로 사용됩니다.

기본적으로 Camel은 ManagedCamelContextMBean 에 다음과 같이 Cryostat 이름을 사용합니다.

org.apache.camel:context=localhost/camel-1,type=context,name=camel-1

Camel 2.13 이후의 호스트 이름은 Cryostat 이름에 포함되지 않으므로 위 예제는 다음과 같습니다.

org.apache.camel:context=camel-1,type=context,name=camel-1

CamelContext 에서 이름을 구성하는 경우 해당 이름은 ObjectName 의 일부이기도 합니다. 예를 들면 다음과 같습니다.

<camelContext id="myCamel" ...>

다음으로 이름은 다음과 같습니다.

org.apache.camel:context=localhost/myCamel,type=context,name=myCamel

이제 JVM에 이름이 지정된 이름이 이미 존재하는 것과 같이 JVM에 이름 충돌이 있는 경우, Camel은 기본적으로 카운터를 사용하여 새 무료 이름을 찾아 이 이름을 자동으로 수정하려고 합니다. 카운터 아래에 표시된 대로 이제 카운터가 추가되므로 ObjectName 의 일부로 myCamel-1 이 있습니다.

org.apache.camel:context=localhost/myCamel-1,type=context,name=myCamel

이는 Camel에서 기본적으로 다음 토큰을 지원하는 이름 지정 패턴을 사용하므로 가능합니다.

  • camelId = CamelContext ID (예: 이름)
  • name - camelId와 동일합니다.
  • 카운터 - 증가 카운터 * bundleId - OSGi 번들 ID (OSGi 환경의 경우에만)
  • symbolicName - OSGi 심볼릭 이름(OSGi 환경 전용)
  • 버전 - OSGi 번들 버전(OSGi 환경 전용)

기본 이름 지정 패턴은 다음과 같이 OSGi와 비OSGi 간에 구분됩니다.

  • 비 OSGI: 이름
  • OSGi: bundleId-name
  • OSGi Camel 2.13: symbolicName

그러나 Cryostat MBeanServer 에 이름 지정 충돌이 있는 경우 Camel은 자동으로 대체되고 패턴의 카운터 를 사용하여 이를 해결합니다. 그러면 다음과 같은 패턴이 사용됩니다.

  • 비 OSGI: 이름-카운터
  • OSGi: bundleId-name-counter
  • OSGi Camel 2.13: symbolicName-카운터

명시적으로 이름 지정 패턴을 설정하면 해당 패턴이 항상 사용되며 위의 기본 패턴은 사용되지 않습니다.

이를 통해 레지스트리에 있는 CamelContext ID와 Cryostat MBeanRegistry의 전체 이름을 완전히 제어할 수 있습니다.

Camel 2.15 이후부터 JVM 시스템 속성을 사용하여 기본 관리 이름 패턴을 구성하여 JVM에 대해 전역적으로 구성할 수 있습니다. 아래 예제와 같이 이 패턴을 명시적으로 구성하여 이 패턴을 재정의할 수 있습니다.

이름 앞에 매료된 기본 관리 이름 패턴을 사용하도록 JVM 시스템 속성을 설정합니다.

System.setProperty(JmxSystemPropertyKeys.MANAGEMENT_NAME_PATTERN, "cool-#name#");

따라서 이름을 명시적으로 지정하고 CamelContext 이름을 명시적으로 사용하고, 변경되지 않는 고정 Cryostat 이름을 사용하려면 (예: 카운터가 없음) 새 managementNamePattern 속성을 사용할 수 있습니다.

<camelContext id="myCamel" managementNamePattern="#name#">

그러면 name은 항상 다음과 같습니다.

org.apache.camel:context=localhost/myCamel,type=context,name=myCamel

Java에서는 다음과 같이 managementNamePattern 을 구성할 수 있습니다.

context.getManagementNameStrategy().setNamePattern("#name#");

managementNamePattern 에 id가 아닌 다른 이름을 사용할 수도 있으므로 예를 들면 다음과 같습니다.

<camelContext id="myCamel" managementNamePattern="coolCamel">

OSGi 번들 ID를 name의 일부로 원하지 않는 경우 OSGi 환경에서 이 작업을 수행할 수 있습니다. 서버를 다시 시작하거나 동일한 애플리케이션을 설치 제거한 경우 OSGi 번들 ID가 변경될 수 있습니다. 그러면 다음과 같이 수행하여 OSGi 번들 ID를 이름의 일부로 사용할 수 있습니다.

<camelContext id="myCamel" managementNamePattern="#name#">

참고: myCamel 은 전체 JVM에서 고유해야 합니다. CamelContext ID 및 managementNamePattern 이 동일한 2nd Camel 애플리케이션을 설치하는 경우 Camel이 시작될 때 실패하고 Cryostat가 이미 예외가 있음을 보고합니다.

180.6.5. ManagementStrategy

Camel 2.1 사용 가능

Camel은 이제 완전히 플러그형 관리 전략을 제공하므로 관리를 100% 제어할 수 있습니다. 이는 관리를 위한 다양한 방법과 풍부한 인터페이스입니다. Cryostat Server 에서 관리되는 개체를 추가 및 제거하는 것뿐만 아니라 org.apache.camel.spi.EventNotifier API를 사용하여 이벤트 알림도 제공됩니다. 예를 들어 다른 관리 제품에 대한 어댑터를 보다 쉽게 제공할 수 있습니다. 또한 Apache에서 제공하는 추가 세부 사항 및 기능을 제공할 수 있습니다.

180.6.6. 성능 통계에 대한 단위 수준 구성

Camel 2.1 사용 가능

Camel이 시작될 때 성능 통계가 활성화되었는지 여부를 사전 설정 수준을 설정할 수 있습니다. 레벨은 다음과 같습니다.

  • 확장 - 기본적으로 끝점의 세분화된 사용 수준과 같이 런타임 중에 추가 통계가 수집되어 있습니다. 이 옵션에는 Camel 2.16이 필요합니다.
  • all / Default - Camel을 사용하면 경로와 프로세서 모두에 대한 통계를 사용할 수 있습니다(분해). Camel 2.16 에서 모든 옵션의 이름이 Default로 변경되었습니다.
  • RoutesOnly - Camel은 경로에 대한 통계만 활성화합니다.
  • off - Camel이 임의의 통계를 활성화하지 않습니다.

Camel 2.9 부터 성능 통계에는 CamelContext 및 Route Cryostat당 평균 부하 통계도 포함됩니다. 통계는 1분당 1분, 5분, 15분당 기내 교환 수에 따른 평균 부하입니다. 이는 Unix 시스템의 로드 통계와 유사합니다. Camel 2.11 을 사용하면 < jmxAgent>에서 loadStatisticsEnabled=false 를 설정하여 로드 성능 통계를 명시적으로 비활성화할 수 있습니다. 정적 수준도 off로 구성된 경우 이 기능이 꺼집니다. Camel 2.13 부터 로드 성능 통계는 기본적으로 비활성화되어 있습니다. < jmxAgent>에서 loadStatisticsEnabled=true 를 설정하여 이를 활성화할 수 있습니다.

런타임 시 항상 관리 콘솔(예: JConsole)을 사용하여 통계가 활성화되었는지 여부를 지정된 경로 또는 프로세서에서 변경할 수 있습니다.

참고

사용 가능한 통계는 무엇을 의미합니까?

통계가 활성화된 통계는 Camel이 해당 특정 Cryostat에 대한 성능 통계를 세밀하게 수행할 수 있음을 의미합니다. 볼 수 있는 통계는 많이 있습니다(예: 완료/실패 수, 마지막/total/mina/max/mean 처리 시간, 첫 번째/마지막 실패 시간 등).

Java DSL을 사용하면 다음을 통해 이 수준을 설정합니다.

// only enable routes when Camel starts
context.getManagementStrategy().setStatisticsLevel(ManagementStatisticsLevel.RoutesOnly);

그리고 Spring DSL에서 다음을 수행합니다.

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
    <jmxAgent id="agent" statisticsLevel="RoutesOnly"/>
 ...
</camelContext>
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동