28장. 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>
Copy to Clipboard Toggle word wrap
참고

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

참고


전송 및 캐싱
JMS 와 트랜잭션을 사용하는 경우 성능에 영향을 줄 수 있으므로 아래의 트랜잭션 및 캐시 수준을 확인합니다.

참고

Camel은 성능 및 클러스터형 환경에 대한다양한 옵션을 제공하므로 Camel에 대한 중요한 참고 사항을 보려면 이 페이지의 아래 JMS에 대한 Request-reply 섹션을 자세히 읽어 보십시오.

28.1. URI 형식

jms:[queue:|topic:]destinationName[?options]
Copy to Clipboard Toggle word wrap

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

jms:FOO.BAR
Copy to Clipboard Toggle word wrap

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

jms:queue:FOO.BAR
Copy to Clipboard Toggle word wrap

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

jms:topic:Stocks.Prices
Copy to Clipboard Toggle word wrap

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

?option=value&option=value&…​

28.1.1. ActiveMQ 사용

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

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

  • ActiveMQ 구성 요소를 사용하는데 이미 최적화된 ActiveMQ 구성 요소 사용
  • ActiveMQ에서 PoolingConnectionFactory 를 사용합니다.

28.1.2. 트랜잭션 및 캐시 수준

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

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

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

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

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

따라서 기본 설정은 보수적이라고 할 수 있습니다. XA가 아닌 트랜잭션을 사용하는 경우 cacheLevelName=CACHE_CONSUMER 를 사용하는 것이 좋습니다.

28.1.3. 조정된 서브스크립션

지속성 주제 서브스크립션을 사용하려면 clientId 및 detect SubscriptionName 을 둘 다 지정해야 합니다. clientId 값은 고유해야 하며 전체 네트워크의 단일 JMS 연결 인스턴스에서만 사용할 수 있습니다. 이러한 제한을 피하기 위해 가상 주제를 대신 사용하는 것을 선호할 수 있습니다. 여기에서 중장성 메시지의 배경을 더 많이 볼 수 있습니다.

28.1.4. 메시지 헤더 매핑

메시지 헤더를 사용하는 경우 JMS 사양은 헤더 이름이 유효한 Java 식별자여야 함을 나타냅니다. 따라서 헤더의 이름을 유효한 Java 식별자로 지정합니다. 이 작업을 수행하는 한 가지 이점은 JMS 선택기 내에서 헤더를 사용할 수 있다는 것입니다(SQL92 구문에 헤더에 Java 식별자 구문이 필요한 경우).

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

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

  • 점을 'DOT' 로 교체하고 Camel이 메시지를 사용할 때 교체가 반전됩니다.
  • 하이픈이 'HYPHEN' 로 대체되고 Camel에서 메시지를 사용할 때 교체가 반전됩니다.

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

참고

Spring JMS
이러한 속성 중 대다수는 Camel이 메시지를 전송 및 수신하는 데 사용하는 Spring JMS의 속성에 매핑
됩니다. 따라서 관련 Spring 문서를 참조하여 이러한 속성에 대한 자세한 정보를 얻을 수 있습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat