14.2. JMS 구성 8080 사용


14.2.1. 개요

JMS 구성을 단순화하고 보다 강력하게 만들기 위해 Apache CXF는 단일 JMS 구성 빈을 사용하여 JMS 엔드포인트를 구성합니다. Cryostat는 org.apache.cxf.transport.jms.JMSConfiguration 클래스에 의해 구현됩니다. 끝점을 직접 구성하거나 JMS conduits 및 대상을 구성하는 데 사용할 수 있습니다.

14.2.2. 구성 네임스페이스

JMS 구성 빈은 Spring p-namespace 를 사용하여 구성을 최대한 간단하게 만듭니다. 이 네임스페이스를 사용하려면 예 14.1. “Spring p-namespace 선언” 와 같이 구성의 root 요소에서 선언해야 합니다.

예 14.1. Spring p-namespace 선언

<beans ...
  xmlns:p="http://www.springframework.org/schema/p"
  ... >
  ...
</beans>

14.2.3. 구성 지정

org.apache.cxf.transport.jms.JMSConfiguration 클래스의 8080을 정의하여 JMS 구성을 지정합니다. 8080의 속성은 전송에 대한 구성 설정을 제공합니다.

중요

CXF 3.0에서는 JMS 전송에 더 이상 Spring JMS에 종속되지 않으므로 일부 Spring JMS 관련 옵션이 제거되었습니다.

표 14.1. “일반 JMS 구성 속성” 공급자와 소비자 모두에 공통된 속성을 나열합니다.

표 14.1. 일반 JMS 구성 속성
속성기본설명

connectionFactory

 

[required] JMS ConnectionFactory를 정의하는 Cryostat에 대한 참조를 지정합니다.

wrapInSingleConnectionFactory

true [pre v3.0]

CXF 3.0에서 삭제

CXF 3.0 이전 버전에서는 Spring SingleConnectionFactory 를 사용하여 ConnectionFactory를 래핑할지 여부를 지정합니다.

JMS 전송의 성능이 향상되므로 연결을 풀지 않는 ConnectionFactory를 사용할 때 이 속성을 활성화합니다. 이는 JMS 전송에서 각 메시지에 대한 새 연결을 생성하고 SingleConnectionFactory 가 연결을 캐시하는 데 필요하므로 재사용할 수 있기 때문입니다.

reconnectOnException

false

CXF 3.0 CXF에서는 예외가 발생할 때 항상 다시 연결됩니다.

CXF 3.0 이전 예외가 발생할 때 새 연결을 만들지 여부를 지정합니다.

Spring SingleConnectionFactory 를 사용하여 ConnectionFactory를 래핑하는 경우:

  • true Cryostat-단어 예외, 새 연결을 생성

    PooledConnectionFactory를 사용할 때는 이 옵션을 활성화하지 마십시오. 이 옵션은 풀링된 연결만 반환하지만 다시 연결하지 않습니다.

  • false 인터페이스와- exception을 다시 연결하려고 하지 마십시오.

targetDestination

 

대상의 JNDI 이름 또는 공급자별 이름을 지정합니다.

replyDestination

 

응답이 전송되는 JMS 대상의 JMS 이름을 지정합니다. 이 속성을 사용하면 응답에 사용자 정의 대상을 사용할 수 있습니다. 자세한 내용은 14.6절. “이름이 지정된 대상 사용” 에서 참조하십시오.

destinationResolver

DynamicDestinationResolver

Spring DestinationResolver 에 대한 참조를 지정합니다.

이 속성을 사용하면 대상 이름이 JMS 대상으로 해석되는 방법을 정의할 수 있습니다. 유효한 값은 다음과 같습니다.

  • JMS 공급자의 기능을 사용하여 DynamicDestinationResolver Cryostat- Cryostatresolve 대상 이름입니다.
  • JNDI를 사용하여 JndiDestinationResolver Cryostat- Cryostatresolve 대상 이름

transactionManager

 

Spring 트랜잭션 관리자에 대한 참조를 지정합니다. 이를 통해 서비스는 JTA 트랜잭션에 참여할 수 있습니다.

taskExecutor

SimpleAsyncTaskExecutor

CXF 3.0에서 삭제

CXF 3.0 이전 TaskExecutor에 대한 참조를 지정합니다. 리스너에서 수신되는 메시지를 처리하는 방법을 결정하는 데 사용됩니다.

useJms11

false

CXF 3.0에서 제거된 CXF 3.0은 JMS 1.1 기능만 지원합니다.

CXF 3.0 이전 에서는 JMS 1.1 기능이 사용되는지 여부를 지정합니다. 유효한 값은 다음과 같습니다.

  • True Cryo stat->-<JMS 1.1 기능
  • false Cryostat- CryostatJMS 1.0.2 기능

messageIdEnabled

true

CXF 3.0에서 삭제

CXF 3.0 이전 에서는 JMS 전송에서 JMS 브로커가 메시지 ID를 제공할지 여부를 지정합니다. 유효한 값은 다음과 같습니다.

  • true Cryostat- Cryostatbroker는 메시지 ID를 제공해야 합니다.
  • false Cryostat- Cryostatbroker는 메시지 ID를 제공할 필요가 없습니다.

    이 경우 엔드포인트는 true 값이 있는 메시지 생산자의 setDisableMessageID() 메서드를 호출합니다. 그러면 브로커에 메시지 ID를 생성하거나 엔드포인트의 메시지에 추가할 필요가 없다는 힌트가 제공됩니다. 브로커는 힌트를 수락하거나 무시합니다.

messageTimestampEnabled

true

CXF 3.0에서 삭제

CXF 3.0 이전 에서는 JMS 전송에서 JMS 브로커가 메시지 타임스탬프를 제공할지 여부를 지정합니다. 유효한 값은 다음과 같습니다.

  • true Cryostat- Cryostatbroker는 메시지 타임스탬프를 제공해야 합니다.
  • false Cryostat- Cryostatbroker는 메시지 타임스탬프를 제공할 필요가 없습니다.

    이 경우 엔드포인트는 message producer의 setDisableMessageTimestamp() 메서드를 true 값으로 호출합니다. 그러면 브로커에 타임스탬프를 생성하거나 엔드포인트의 메시지에 추가할 필요가 없다는 힌트가 제공됩니다. 브로커는 힌트를 수락하거나 무시합니다.

cacheLevel

-1 (feature disabled)

CXF 3.0에서 삭제

CXF 3.0 이전 에서는 JMS 리스너 컨테이너가 적용할 수 있는 캐싱 수준을 지정합니다. 유효한 값은 다음과 같습니다.

  • 0 CRYOSTAT- CRYOSTATCACHE_NONE
  • 1 CRYOSTAT- CRYOSTATCACHE_CONNECTION
  • 2 CRYOSTAT- CRYOSTATCACHE_SESSION
  • 3 CRYOSTAT- CRYOSTATCACHE_CONSUMER
  • 4 — CACHE_AUTO

자세한 내용은 DefaultMessageListenerContainer를 참조하십시오.

pubSubNoLocal

false

주제를 사용할 때 자신의 메시지를 받을지 여부를 지정합니다.

  • true - - 자체 메시지를 수신하지 마십시오.
  • false - 자체 메시지를 수신

receiveTimeout

60000

응답 메시지를 대기하는 시간(밀리초)을 지정합니다.

explicitQosEnabled

false

QoS 설정(예: priority, persistence, live)이 각 메시지에 대해 명시적으로 설정되어 있는지(true) 또는 기본값(false)을 사용하도록 지정합니다.

deliveryMode

2

메시지가 영구적인지 여부를 지정합니다. 유효한 값은 다음과 같습니다.

  • 1 (NON_PERSISTENT)-메시지는 메모리만 유지됩니다.
  • 2 (PERSISTENT)-메시지는 디스크에 유지됩니다.

priority

4

메시지 우선 순위를 지정합니다. JMS 우선순위 값의 범위는 0 (가장 낮음)에서 9 (가장 높음) 사이입니다. 자세한 내용은 JMS 공급자의 설명서를 참조하십시오.

timeToLive

0 (definitely)

전송된 메시지가 삭제되기 전에 시간(밀리초)을 지정합니다.

sessionTransacted

false

JMS 트랜잭션이 사용되는지 여부를 지정합니다.

concurrentConsumers

1

CXF 3.0에서 삭제

CXF 3.0 이전 에서는 리스너에 대한 최소 동시 소비자 수를 지정합니다.

maxConcurrentConsumers

1

CXF 3.0에서 삭제

CXF 3.0 이전 에서는 리스너에 대한 최대 동시 소비자 수를 지정합니다.

messageSelector

 

수신 메시지를 필터링하는 데 사용되는 선택기의 문자열 값을 지정합니다. 이 속성을 사용하면 여러 연결이 큐를 공유할 수 있습니다. 메시지 선택기를 지정하는 데 사용되는 구문에 대한 자세한 내용은 JMS 1.1 사양 을 참조하십시오.

subscriptionDurable

false

서버의 subscriptions를 사용할지 여부를 지정합니다.

durableSubscriptionName

 

Cryostat 서브스크립션을 등록하는 데 사용되는 이름(문자열)을 지정합니다.

messageType

text

메시지 데이터를 JMS 메시지로 패키징하는 방법을 지정합니다. 유효한 값은 다음과 같습니다.

  • data가 text text로 패키지될 것임을 나타냅니다 .
  • 데이터는 바이트 배열( byte [])으로 패키징됨을 나타냅니다.
  • binary Cryostat->-<specifies that the data will be packaged as an CryostatMessage

pubSubDomain

false

대상 대상이 주제인지 또는 큐인지를 지정합니다. 유효한 값은 다음과 같습니다.

  • true Cryostat- Cryostattopic
  • false Cryostat- Cryostatqueue

jmsProviderTibcoEms

false

JMS 공급자가 Tibco Cryostat인지 여부를 지정합니다.

true 로 설정하면 보안 컨텍스트의 주체가 JMS_TIBCO_SENDER 헤더에서 채워집니다.

useMessageIDAsCorrelationID

false

CXF 3.0에서 삭제

JMS에서 메시지 ID를 사용하여 메시지 상관 관계를 설정할지 여부를 지정합니다.

true 로 설정하면 클라이언트는 생성된 상관 관계 ID를 설정합니다.

maxSuspendedContinuations

-1 (feature disabled)

CXF 3.0 JMS 대상에서 보유할 수 있는 일시 중지된 최대 연속 수를 지정합니다. 현재 번호가 지정된 최대값을 초과하면 JMSListenerContainer가 중지됩니다.

reconnectPercentOfMax

70

CXF 3.0maxSuspendedContinuations 를 초과하기 위해 JMSListenerContainer를 다시 시작할 시기를 지정합니다.

현재 일시 중단된 연속 수가 값 (maxSuspendedContinuations * reconnectPercentOfMax/100) 아래에 있으면 리스너 컨테이너가 재시작됩니다.

예 14.2. “JMS 구성 Cryostat” 에 표시된 것처럼, 빈의 속성은 8080 요소에 대한 속성으로 지정됩니다. 모두 Spring p 네임 스페이스에 선언되어 있습니다.

예 14.2. JMS 구성 Cryostat

<bean id="jmsConfig"
      class="org.apache.cxf.transport.jms.JMSConfiguration"
      p:connectionFactory="jmsConnectionFactory"
      p:targetDestination="dynamicQueues/greeter.request.queue"
      p:pubSubDomain="false" />

14.2.4. 끝점에 구성 적용

JMSConfiguration 8080은 Apache CXF 기능 메커니즘을 사용하여 서버 및 클라이언트 끝점 모두에 직접 적용할 수 있습니다. 이렇게 하려면 다음을 수행합니다.

  1. 끝점의 address 속성을 jms:// 로 설정합니다.
  2. 엔드포인트 구성에 jaxws:feature 요소를 추가합니다.
  3. org.apache.cxf.transport.jms.JMSConfigFeature 유형의 Cryostat를 기능에 추가합니다.
  4. 8080 요소의 p:jmsConfig-ref 속성을 JMSConfiguration 8080의 ID로 설정합니다.

예 14.3. “Cryostat-WS 클라이언트에 JMS 구성 추가” 예 14.2. “JMS 구성 Cryostat” 의 JMS 구성을 사용하는 Cryostat-WS 클라이언트를 표시합니다.

예 14.3. Cryostat-WS 클라이언트에 JMS 구성 추가

<jaxws:client id="CustomerService"
              xmlns:customer="http://customerservice.example.com/"
              serviceName="customer:CustomerServiceService"
              endpointName="customer:CustomerServiceEndpoint"
              address="jms://"
              serviceClass="com.example.customerservice.CustomerService">
  <jaxws:features>
    <bean xmlns="http://www.springframework.org/schema/beans"
          class="org.apache.cxf.transport.jms.JMSConfigFeature"
          p:jmsConfig-ref="jmsConfig"/>
  </jaxws:features>
</jaxws:client>

14.2.5. 전송에 구성 적용

JMSConfiguration 8080은 jms:jmsConfig-ref 요소를 사용하여 JMS conduits 및 JMS 대상에 적용할 수 있습니다. jms:jmsConfig-ref 요소의 값은 JMSConfiguration 8080의 ID입니다.

예 14.4. “JMS conduit에 JMS 구성 추가” 예 14.2. “JMS 구성 Cryostat” 의 JMS 구성을 사용하는 JMS 연속을 표시합니다.

예 14.4. JMS conduit에 JMS 구성 추가

<jms:conduit name="{http://cxf.apache.org/jms_conf_test}HelloWorldQueueBinMsgPort.jms-conduit">
  ...
  <jms:jmsConfig-ref>jmsConf</jms:jmsConfig-ref>
</jms:conduit>
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.