2.16. Cryostat 이름 지정

2.16.1. 개요

Apache Camel을 사용하면 관리 이름 패턴을 정의하여 CamelContext 8080의 이름을 Cryostat에 표시할 수 있습니다. 예를 들어 다음과 같이 XML CamelContext 인스턴스의 이름 패턴을 사용자 지정할 수 있습니다.

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

CamelContext 8080의 이름 패턴을 명시적으로 설정하지 않으면 Apache Camel이 기본 이름 지정 전략으로 되돌아갑니다.

2.16.2. 기본 이름 지정 전략

기본적으로 OSGi 번들에 배포된 CamelContext 8080의 Cryostat 이름은 번들의 OSGi 심볼릭 이름과 동일합니다. 예를 들어 OSGi 심볼릭 이름이 MyCamelBundle 인 경우 Cryostat 이름은 MyCamelBundle 입니다. 번들에 CamelContext 가 두 개 이상 있는 경우 counter 값을 접미사로 추가하여 Cryostat 이름을 모호하게 합니다. 예를 들어 MyCamelBundle 번들에 Camel 컨텍스트가 여러 개인 경우 해당 Cryostat의 이름이 다음과 같이 지정됩니다.

MyCamelBundle-1
MyCamelBundle-2
MyCamelBundle-3
...

2.16.3. Cryostat 이름 지정 전략 사용자 정의

기본 이름 지정 전략의 한 가지 단점은 지정된 CamelContext 8080이 실행 사이에 동일한 Cryostat 이름을 갖도록 보장할 수 없다는 것입니다. 실행 간에 일관성을 높이려면 CamelContext 인스턴스에 대한 Cryostat 이름 패턴을 정의하여 더 정확하게 이름을 제어할 수 있습니다.

2.16.4. Java에서 이름 패턴 지정

Java의 CamelContext 에 이름 패턴을 지정하려면 다음과 같이 setNamePattern 메서드를 호출합니다.

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

2.16.5. XML에서 이름 패턴 지정

XML의 CamelContext 에 이름 패턴을 지정하려면 다음과 같이 camelContext 요소에 managementNamePattern 속성을 설정합니다.

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

2.16.6. 이름 패턴 토큰

리터럴 텍스트와 다음 토큰 중 하나를 혼합하여 Cryostat 이름 패턴을 구성할 수 있습니다.

표 2.11. Cryostat 이름 패턴 토큰

토큰설명

#camelId#

CamelContext 8080의 id 속성 값입니다.

#name#

#camelId# 과 동일합니다.

#counter#

증가 카운터( 1에서 시작)입니다.

#bundleId#

배포된 번들 (OSGi만 해당)의 OSGi 번들 ID입니다.

#symbolicName#

OSGi 심볼릭 이름 (OSGi만 해당).

#version#

OSGi 번들 버전 (OSGi만 해당).

2.16.7. 예

다음은 지원되는 토큰을 사용하여 정의할 수 있는 몇 가지 예제입니다.

<camelContext id="fooContext" managementNamePattern="FooApplication-#name#">
    ...
</camelContext>
<camelContext id="myCamel" managementNamePattern="#bundleID#-#symbolicName#-#name#">
    ...
</camelContext>

2.16.8. 모호한 이름

사용자 정의 이름 지정 패턴은 기본 이름 지정 전략을 재정의하므로 이 접근 방식을 사용하여 모호한 Cryostat 이름을 정의할 수 있습니다. 예를 들면 다음과 같습니다.

<camelContext id="foo" managementNamePattern="SameOldSameOld"> ... </camelContext>
...
<camelContext id="bar" managementNamePattern="SameOldSameOld"> ... </camelContext>

이 경우 시작 시 Apache Camel이 실패하고 Cryostat가 이미 예외가 존재하는 것으로 보고했습니다. 따라서 모호한 이름 패턴을 정의하지 않도록 주의해야 합니다.