179.3. 참고
179.3.1. ActiveMQ 사용
JMS 구성 요소는 메시지를 전송하기 위해 Spring 2의 JmsTemplate
을 재사용합니다. 이는 비 J2EE 컨테이너에서 사용하기에 적합하지 않으며 일반적으로 성능이 저하 되지 않도록 JMS 공급자에서 일부 캐싱이 필요합니다.
Apache ActiveMQ 를 메시지 브로커로 사용하려는 경우 다음 중 하나를 수행하는 것이 좋습니다.
- ActiveMQ를 효율적으로 사용하기 위해 이미 최적화된 ActiveMQ 구성 요소를 사용합니다.
-
ActiveMQ에서
PoolingConnectionFactory
를 사용합니다.
179.3.2. 트랜잭션 및 캐시 수준
메시지를 사용하고 트랜잭션(transacted=true
)을 사용하는 경우 캐시 수준의 기본 설정이 성능에 영향을 미칠 수 있습니다.
XA 트랜잭션을 사용하는 경우 XA 트랜잭션이 제대로 작동하지 않을 수 있으므로 캐시할 수 없습니다.
XA를 사용하지 않는 경우 cacheLevelName=CACHE_CONSUMER
설정과 같은 성능 속도 향상에 따라 캐싱을 고려해야 합니다.
Camel 2.7.x를 통해 cacheLevelName
의 기본 설정은 CACHE_CONSUMER
입니다. cacheLevelName=CACHE_NONE
을 명시적으로 설정해야 합니다.
Camel 2.8 이후의 경우 cacheLevelName
의 기본 설정은 CACHE_AUTO
입니다. 이 기본 자동은 모드를 감지하고 그에 따라 캐시 수준을 설정합니다.
-
caCHE_CONSUMER
iftransacted=false
-
transacted=true
인 경우 caCHE_NONE
따라서 기본 설정은 보수적이라고 할 수 있습니다. XA 이외의 트랜잭션을 사용하는 경우 cacheLevelName=CACHE_CONSUMER
를 사용하는 것이 좋습니다.
179.3.3. Cryostat 서브스크립션
Cryostat 주제 서브스크립션을 사용하려면 clientId
및 Cryostat SubscriptionName
을 둘 다 지정해야 합니다. clientId
의 값은 고유해야 하며 전체 네트워크의 단일 JMS 연결 인스턴스에서만 사용할 수 있습니다. 이러한 제한을 피하기 위해 가상 주제 를 사용하는 것이 좋습니다. Cryostat 메시징에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
179.3.4. 메시지 헤더 매핑
메시지 헤더를 사용할 때 JMS 사양은 헤더 이름이 유효한 Java 식별자여야 함을 나타냅니다. 따라서 헤더의 이름을 유효한 Java 식별자로 지정하십시오. 한 가지 장점은 JMS Selector 내부에서 헤더를 사용할 수 있다는 점입니다(SQL92 구문은 헤더에 Java 식별자 구문이 필요합니다).
기본적으로 헤더 이름을 매핑하는 간단한 전략이 사용됩니다. 이 전략은 아래에 표시된 대로 헤더 이름에 있는 모든 점과 하이픈을 교체하고, 유선을 통해 전송된 JMS 메시지에서 헤더 이름을 복원할 때 교체를 되돌리는 것입니다. 이것은 무엇을 의미합니까? 빈 구성 요소에서 호출할 메서드 이름을 더 이상 손실하지 않고 파일 구성 요소의 파일 이름 헤더를 더 이상 손실하지 않습니다.
Camel에서 헤더 이름을 수락하는 현재 헤더 이름 전략은 다음과 같습니다.
-
점이
DOT
로 교체되고 Camel에서 메시지를 사용할 때 교체가 교체됩니다. -
하이픈은
HYPHEN
으로 교체되고 Camel이 메시지를 사용할 때 교체됩니다.