25장. JMS


생산자 및 소비자 모두 지원

이 구성 요소를 사용하면 JMS Queue 또는 Topic에서 메시지를 보내거나 사용할 수 있습니다. 전송을 위해 Spring의 JmsTemplate 과 소비하기 위해 MessageListenerContainer 를 포함하여 선언적 트랜잭션에 대한 Spring의 JMS 지원을 사용합니다.

Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-jms</artifactId>
    <version>{CamelSBVersion}</version>
    <!-- use the same version as your Camel core version -->
</dependency>
참고

ActiveMQ
를 사용하는 경우 Apache ActiveMQ 를 사용하는 경우 ActiveMQ 구성 요소가 ActiveMQ에 최적화되었으므로 우선해야 합니다. 이 페이지의 모든 옵션과 샘플은 ActiveMQ 구성 요소에도 유효합니다.

참고

트랜잭션 및 캐싱
은 성능에 영향을 줄 수 있으므로 JMS 와 함께 트랜잭션을 사용하는 경우 아래의 섹션 트랜잭션 및 캐시 수준
을 참조하십시오.

참고

Camel은 성능 및 클러스터 형 환경을 구성할 수 있는 다양한 옵션을 제공하므로 이 페이지에서 JMS에 대한 요청 /재무적인 요청 섹션을 추가로 읽고 요청/reply에 대한 중요한 정보를 확인할 수 있습니다.

25.1. URI 형식

jms:[queue:|topic:]destinationName[?options]

여기서 destinationName 은 JMS 대기열 또는 주제 이름입니다. 기본적으로 destinationName 은 큐 이름으로 해석됩니다. 예를 들어 큐에 연결하려면 FOO.BAR 은 다음을 사용합니다.

jms:FOO.BAR

원하는 경우 선택적 queue: 접두사를 포함할 수 있습니다.

jms:queue:FOO.BAR

항목에 연결하려면 topic: 접두사를 포함해야 합니다. 예를 들어 주제, Stocks.Prices 에 연결하려면 다음을 사용합니다.

jms:topic:Stocks.Prices

다음 형식을 사용하여 URI에 쿼리 옵션을 추가합니다.

?option=value&option=value&…

25.1.1. ActiveMQ 사용

JMS 구성 요소는 Spring 2의 JmsTemplate 을 사용하여 메시지를 보냅니다. 이는 비J2EE 컨테이너에서 사용하기에 적합하지 않으며 일반적으로 성능 이 저하되지 않도록 JMS 공급자의 일부 캐싱이 필요합니다.

Apache ActiveMQ 를 메시지 브로커로 사용하려는 경우 다음 중 하나를 수행하는 것이 좋습니다.

  • ActiveMQ를 효율적으로 사용하도록 이미 최적화된 ActiveMQ 구성 요소 사용
  • ActiveMQ에서 PoolingConnectionFactory 를 사용합니다.

25.1.2. 트랜잭션 및 캐시 수준

메시지를 사용하고 트랜잭션을 사용하는 경우(transacted=true) 캐시 수준에 대한 기본 설정은 성능에 영향을 미칠 수 있습니다.

XA 트랜잭션을 사용하는 경우 XA 트랜잭션이 제대로 작동하지 않기 때문에 캐시할 수 없습니다.

XA를 사용하지 않는 경우 cacheLevelName=CACHE_CONSUMER 설정 등 성능 속도가 빨라지므로 캐싱을 고려해야 합니다.

cacheLevelName 의 기본 설정은 CACHE_AUTO 입니다. 이 기본 auto는 모드를 감지하고 이에 따라 캐시 수준을 설정합니다.

  • CACHE_CONSUMER if transacted=false
  • CACHE_NONE if transacted=true

기본 설정은 보수적이라고 할 수 있습니다. XA 이외의 트랜잭션을 사용하는 경우 cacheLevelName=CACHE_CONSUMER 사용을 고려하십시오.

25.1.3. 내구성 서브스크립션

내구성 주제 서브스크립션을 사용하려면 clientIddurableSubscriptionName 을 모두 지정해야 합니다. clientId 값은 고유해야 하며 전체 네트워크의 단일 JMS 연결 인스턴스에서만 사용할 수 있습니다. 이러한 제한을 방지하려면 가상 주제 를 대신 사용하는 것이 좋습니다. 내구성 메시징에 대한 자세한 내용은 여기를 참조하십시오.

25.1.4. Message Header Mapping

메시지 헤더를 사용하는 경우 JMS 사양은 헤더 이름이 유효한 Java 식별자여야 한다고 명시합니다. 따라서 헤더의 이름을 올바른 Java 식별자로 지정해 보십시오. 이를 수행하는 한 가지 이점은 JMS 선택기 내에서 헤더를 사용할 수 있다는 것입니다(예: SQL92 구문에서 헤더에 Java 식별자 구문을 요구하는 경우).

헤더 이름을 매핑하는 간단한 전략이 기본적으로 사용됩니다. 이 전략은 아래에 표시된 대로 헤더 이름에서 점과 하이픈을 교체하고, 헤더 이름이 전선을 통해 전송된 JMS 메시지에서 복원될 때 교체를 되돌리는 것입니다. 이것은 무엇을 의미합니까? 빈 구성 요소에서 호출할 메서드 이름을 손실하지 않고 파일 구성 요소의 파일 이름 헤더를 더 이상 손실하지 않습니다.

Camel에서 헤더 이름을 허용하는 현재 헤더 이름 전략은 다음과 같습니다.

  • dots는 'DOT' 로 대체되며 Camel이 메시지를 사용할 때 교체됩니다.
  • 하이픈은 'HYPHEN' 으로 교체되며 Camel이 메시지를 사용하면 교체가 취소됩니다.

JMSConfiguration 개체의 속성에 매핑되는 JMS 끝점에서 다양한 속성을 구성할 수 있습니다.

참고

Spring JMS로 매핑
이러한 속성의 대부분은 메시지를 보내고 받는 데 사용하는 Spring JMS의 속성에 매핑됩니다. 따라서 관련 Spring 문서를 참조하여 이러한 속성에 대한 자세한 정보를 얻을 수 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.