178.3. 참고
178.3.1. ActiveMQ 사용 링크 복사링크가 클립보드에 복사되었습니다!
JMS 구성 요소는 Spring 2의 JmsTemplate
을 사용하여 메시지를 보냅니다. 이는 J2EE 컨테이너에서 사용하기에 적합하지 않으며 일반적으로 성능이 저하 되지 않도록 JMS 공급자의 일부 캐싱이 필요합니다.
Apache ActiveMQ 를 메시지 브로커로 사용하려면 다음 중 하나를 수행하는 것이 좋습니다.
- ActiveMQ를 효율적으로 사용하도록 이미 최적화된 ActiveMQ 구성 요소를 사용합니다.
-
ActiveMQ에서
PoolingConnectionFactory
를 사용합니다.
178.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
입니다. 이 기본 auto는 모드를 감지하고 이에 따라 캐시 수준을 설정합니다.
-
CACHE_CONSUMER
iftransacted=false
-
CACHE_NONE
iftransacted=true
따라서 기본 설정은 보수적이라고 할 수 있습니다. XA 이외의 트랜잭션을 사용하는 경우 cacheLevelName=CACHE_CONSUMER
를 사용하는 것이 좋습니다.
178.3.3. Guaranteed Subscription 링크 복사링크가 클립보드에 복사되었습니다!
VolumeSnapshot topic 서브스크립션을 사용하려면 clientId
및ECDHE SubscriptionName을 둘 다 지정해야 합니다
. clientId
값은 고유해야 하며 전체 네트워크의 단일 JMS 연결 인스턴스에서만 사용할 수 있습니다. 이러한 제한을 피하기 위해 가상 주제 를 사용하는 것이 좋습니다. persistent messaging에 대한 자세한 내용은 여기를 참조하십시오.
178.3.4. 메시지 헤더 매핑 링크 복사링크가 클립보드에 복사되었습니다!
메시지 헤더를 사용하는 경우 JMS 사양은 헤더 이름이 유효한 Java 식별자여야 합니다. 따라서 헤더 이름을 유효한 Java 식별자로 지정하십시오. 이 작업을 수행할 때의 한 가지 이점은 JMS 선택기 내에서 헤더를 사용할 수 있다는 것입니다(예: SQL92 구문에는 헤더에 대한 Java 식별자 구문 필요).
헤더 이름을 매핑하기 위한 간단한 전략이 기본적으로 사용됩니다. 전략은 아래 표시된 대로 헤더 이름의 모든 점과 하이픈을 교체하고, 헤더 이름을 통해 전송된 JMS 메시지에서 헤더 이름을 복원할 때 교체를 취소하는 것입니다. 이것은 무엇을 의미합니까? 더 이상Bean 구성 요소에서 호출할 메서드 이름을 손실하지 않고 더 이상 File Component의 filename 헤더를 손실하지 마십시오.
Camel에서 헤더 이름을 수락하기 위한 현재 헤더 이름 전략은 다음과 같습니다.
-
dots는
DOT
로 교체되고 Camel이 메시지를 사용할 때 대체됩니다. -
Camel에서 메시지를 사용하면 하이픈이
HYPHEN
으로 교체되고 대체가 교체됩니다.