179.6.4. 관리 이름 지정 패턴
Camel 2.10에서 사용 가능
Camel 2.10 이후부터 MBean에 대한 이름 지정 패턴을 더 쉽게 구성할 수 있습니다. 패턴은 도메인 이름 뒤에 있는 키로 ObjectName
의 일부로 사용됩니다.
기본적으로 Camel은 ManagedCamelContextMBean
의 MBean 이름을 다음과 같이 사용합니다.
org.apache.camel:context=localhost/camel-1,type=context,name=camel-1
org.apache.camel:context=localhost/camel-1,type=context,name=camel-1
Camel 2.13 에서 호스트 이름은 MBean 이름에 포함되지 않으므로 위의 예는 다음과 같습니다.
org.apache.camel:context=camel-1,type=context,name=camel-1
org.apache.camel:context=camel-1,type=context,name=camel-1
CamelContext
에서 이름을 구성하는 경우 해당 이름이 ObjectName
의 일부이기도 합니다. 예를 들어, 우리가 가지고 있는 경우
<camelContext id="myCamel" ...>
<camelContext id="myCamel" ...>
그런 다음 MBean 이름은 다음과 같습니다.
org.apache.camel:context=localhost/myCamel,type=context,name=myCamel
org.apache.camel:context=localhost/myCamel,type=context,name=myCamel
이제 JVM에 명명 문제가 있는 경우(예: 위에 지정된 이름의 MBean이 이미 존재하는 경우 Camel은 기본적으로 counter를 사용하여 JMXMBeanServer
에서 새 무료 이름을 찾아 이 이름을 자동 수정하려고 합니다. 이제 카운터 아래에 표시되어 있으므로 ObjectName
의 일부로 myCamel-1
이 있습니다.
org.apache.camel:context=localhost/myCamel-1,type=context,name=myCamel
org.apache.camel:context=localhost/myCamel-1,type=context,name=myCamel
Camel은 기본적으로 다음 토큰을 지원하는 이름 지정 패턴을 사용하기 때문에 가능합니다.
-
camelId
= CamelContext ID (예: 이름) -
name
- same ascamelId
-
카운터
- 증분 카운터* bundleId
- OSGi 번들 ID (OSI 환경 전용) -
symbolicName
- OSGi 심볼릭 이름(OSI 환경 전용) -
버전
- OSGi 번들 버전 (OSI 환경 전용)
기본 명명 패턴은 OSGi와 비OSGi 간에 차별화됩니다.
-
non OSGI:
name
-
OSGi:
bundleId-name
-
OSGi Camel 2.13:
symbolicName
그러나 JMXMBeanServer
에 명명 문제가 있는 경우 Camel은 자동으로 대체를 수행하고 패턴에서 카운터
를 사용하여 이 문제를 해결합니다. 그러면 다음 패턴이 사용됩니다.
-
OSGI:
name-counter
-
OSGi:
bundleId-name-counter
-
OSGi Camel 2.13:
symbolicName-counter
명시적 이름 지정 패턴을 설정하면 해당 패턴이 항상 사용되며 위의 기본 패턴은 사용되지 않습니다.
이를 통해 레지스트리의 CamelContext
ID와 JMXMBeanRegistry
의 JMX MBean 모두에 대해 매우 쉽게 이름을 지정할 수 있습니다.
Camel 2.15 부터 JVM 시스템 속성을 사용하여 기본 관리 이름 패턴을 구성하여 JVM에 대해 전역적으로 구성할 수 있습니다. 아래 예에 표시된 대로 이 패턴을 명시적으로 구성하여 이 패턴을 재정의할 수 있습니다.
이름 앞에 cool를 붙는 기본 관리 이름 패턴을 사용하도록 JVM 시스템 속성을 설정합니다.
System.setProperty(JmxSystemPropertyKeys.MANAGEMENT_NAME_PATTERN, "cool-#name#");
System.setProperty(JmxSystemPropertyKeys.MANAGEMENT_NAME_PATTERN, "cool-#name#");
따라서 CamelContext
를 둘 다 명시적으로 지정하고, 변경되지 않는 고정 MBean 이름을 사용하려면(예: 카운터가 없는 경우) 새 managementNamePattern
속성을 사용할 수 있습니다.
<camelContext id="myCamel" managementNamePattern="#name#">
<camelContext id="myCamel" managementNamePattern="#name#">
그런 다음 MBean 이름은 항상 다음과 같습니다.
org.apache.camel:context=localhost/myCamel,type=context,name=myCamel
org.apache.camel:context=localhost/myCamel,type=context,name=myCamel
Java에서 managementNamePattern
을 다음과 같이 구성할 수 있습니다.
context.getManagementNameStrategy().setNamePattern("#name#");
context.getManagementNameStrategy().setNamePattern("#name#");
또한 managementNamePattern
에서 id와 다른 이름을 사용할 수도 있으므로 예를 들어 다음 작업을 수행할 수 있습니다.
<camelContext id="myCamel" managementNamePattern="coolCamel">
<camelContext id="myCamel" managementNamePattern="coolCamel">
OSGi 환경에서 이 작업을 수행할 수 있습니다. OSGi 번들 ID가 MBean 이름의 일부로 필요하지 않은 경우. OSGi 번들 ID는 서버를 다시 시작하거나 동일한 애플리케이션을 설치 제거하는 경우 변경될 수 있습니다. 그런 다음 OSGi 번들 ID를 이름의 일부로 사용하지 않으려면 다음을 수행할 수 있습니다.
<camelContext id="myCamel" managementNamePattern="#name#">
<camelContext id="myCamel" managementNamePattern="#name#">
이를 위해서는 myCamel
이 전체 JVM에서 고유해야 합니다. 동일한 Camel ID 및 managementNamePattern
이 있는 2nd Camel
애플리케이션을 설치하면 Camel이 시작 시 실패하고 MBean이 이미 예외를 보고합니다.