11.7. Cryostat 구독자


11.7.1. 개요

그림 11.6. “Cryostat 구독자 패턴” 에 표시된 대로 지속성 구독자 는 소비자가 메시징 시스템에서 연결이 끊긴 동안 전송된 메시지를 포함하여 특정 6.2절. “게시-서브스크립션 채널” 채널을 통해 전송되는 모든 메시지를 수신하려는 소비자입니다. 이를 위해서는 메시징 시스템이 연결이 끊긴 소비자로 나중에 재생하기 위한 메시지를 저장해야 합니다. 또한 소비자가 기존 서브스크립션을 구축하고자 한다는 것을 나타내는 메커니즘이 있어야 합니다. 일반적으로 게시-구독 채널(또는 topic)은 다음과 같이 작동합니다.

  • 비독일 수 있는 구독자 으며 연결연결이 끊어진 두 가지 상태가 있을 수 있습니다. 실행 불가능한 구독자는 주제에 연결되어 있지만 주제의 모든 메시지를 실시간으로 수신합니다. 그러나 실행 불가능한 구독자는 구독자의 연결이 끊어진 동안 해당 주제로 보낸 메시지를 받지 않습니다.
  • 강인 구독자 Cryo stat- Cryostat는 두 가지 상태, 즉 연결비활성 상태가 있을 수 있습니다. 비활성 상태는 지속성 구독자가 주제와의 연결이 끊어지지만 임시로 들어오는 메시지를 수신하려는 것을 의미합니다. ity 구독자가 항목에 다시 연결되면 비활성 상태인 동안 전송된 모든 메시지를 재생합니다.

그림 11.6. Cryostat 구독자 패턴

Cryostat 구독자 패턴

11.7.2. JMS Cryostat 구독자

JMS 구성 요소는 지속성 구독자 패턴을 구현합니다. JMS 끝점에서 Cryostat 서브스크립션을 설정하려면 이 특정 연결을 식별하는 클라이언트 ID 와 Cryo stat 서브스크립션 이름을 지정해야 합니다. 예를 들어 다음 경로는 클라이언트 ID가 conn01 인 JMS 주제, news 에 대한 Cryostat 서브스크립션을 설정하고, audit .Doe의 Cryostat 서브스크립션 이름을 설정합니다.

from("jms:topic:news?clientId=conn01&durableSubscriptionName=John.Doe").
    to("cxf:bean:newsprocessor");

ActiveMQ 끝점을 사용하여 Cryostat 서브스크립션을 설정할 수도 있습니다.

from("activemq:topic:news?clientId=conn01&durableSubscriptionName=John.Doe").
    to("cxf:bean:newsprocessor");

들어오는 메시지를 동시에 처리하려는 경우 SEDA 끝점을 사용하여 다음과 같이 여러 병렬 세그먼트로 경로를 배포할 수 있습니다.

from("jms:topic:news?clientId=conn01&durableSubscriptionName=John.Doe").
    to("seda:fanout");

from("seda:fanout").to("cxf:bean:newsproc01");
from("seda:fanout").to("cxf:bean:newsproc02");
from("seda:fanout").to("cxf:bean:newsproc03");

SEDA 구성 요소가 경쟁 소비자 패턴을 지원하므로 각 메시지가 한 번만 처리되는 경우입니다.

11.7.3. 대체 예

또 다른 대안은 사용할 수 없는 경우 SEDA 의 경우 11.5절. “메시지 Dispatcher” 또는 8.1절. “콘텐츠 기반 라우터”파일 또는 JPA 구성 요소와 결합한 것입니다.

다음은 JMS 주제의 구독자를 생성하는 간단한 예입니다.

Fluent Builders사용

 from("direct:start").to("activemq:topic:foo");

 from("activemq:topic:foo?clientId=1&durableSubscriptionName=bar1").to("mock:result1");

 from("activemq:topic:foo?clientId=2&durableSubscriptionName=bar2").to("mock:result2");

Spring XML Extensions사용

 <route>
     <from uri="direct:start"/>
     <to uri="activemq:topic:foo"/>
 </route>

 <route>
     <from uri="activemq:topic:foo?clientId=1&durableSubscriptionName=bar1"/>
     <to uri="mock:result1"/>
 </route>

 <route>
     <from uri="activemq:topic:foo?clientId=2&durableSubscriptionName=bar2"/>
     <to uri="mock:result2"/>
 </route>

다음은 JMS Cryostat 구독자의 또 다른 예이지만, 이번에는 가상 주제 를 사용합니다(레드 서브스크립션을 통해 AMQ에 의해 권장됨)

Fluent Builders 사용

 from("direct:start").to("activemq:topic:VirtualTopic.foo");

 from("activemq:queue:Consumer.1.VirtualTopic.foo").to("mock:result1");

 from("activemq:queue:Consumer.2.VirtualTopic.foo").to("mock:result2");

Spring XML Extensions사용

 <route>
     <from uri="direct:start"/>
     <to uri="activemq:topic:VirtualTopic.foo"/>
 </route>

 <route>
     <from uri="activemq:queue:Consumer.1.VirtualTopic.foo"/>
     <to uri="mock:result1"/>
 </route>

 <route>
     <from uri="activemq:queue:Consumer.2.VirtualTopic.foo"/>
     <to uri="mock:result2"/>
 </route>
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.