4.22.8. 업스트림 대기열 통합 구성


다음 예는 독립 실행형 브로커에 대해 업스트림 대기열 페더레이션을 구성하는 방법을 보여줍니다. 이 예제에서는 로컬 (즉, 다운스트림 ) 브로커에서 일부 원격 (즉, 업스트림) 브로커에 대한 페더레이션을 구성합니다.

사전 요구 사항

  • 다음 예제에서는 독립 실행형 브로커 간에 큐 페더레이션을 구성하는 방법을 보여줍니다. 그러나 브로커 클러스터에 대한 페더레이션 구성 요구 사항도 잘 알고 있어야 합니다. 자세한 내용은 4.22.4절. “브로커 클러스터에 대한 페더레이션 구성”의 내용을 참조하십시오.

절차

  1. < broker_instance_dir> /etc/broker.xml 구성 파일을 엽니다.
  2. 새로운 < federations > 요소 내에서 < federation> 요소를 추가합니다. 예를 들면 다음과 같습니다.

    <federations>
      <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9">
      </federation>
    </federations>
    name
    페더레이션 구성의 이름입니다. 이 예에서 name은 downstream 브로커의 이름에 해당합니다.
    user
    업스트림 브로커에 연결하기 위한 공유 사용자 이름입니다.
    암호
    업스트림 브로커와의 연결에 대한 공유 암호입니다.
    참고
    • 업스트림 브로커에 대해 사용자 및 암호 인증 정보가 다른 경우 구성에 추가할 때 해당 브로커의 인증 정보를 별도로 지정할 수 있습니다. 이 내용은 이 절차의 뒷부분에서 설명합니다.
  3. 페더레이션 요소 내에서 &lt; queue-policy&gt; 요소를 추가합니다. < queue-policy> 요소의 속성에 대한 값을 지정합니다. 예를 들면 다음과 같습니다.

    <federations>
        <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9">
    
            <queue-policy name="news-queue-federation" include-federated="true" priority-adjustment="-5" transformer-ref="news-transformer">
            </queue-policy>
    
        </federation>
    </federations>
    name
    큐 정책의 이름입니다. 브로커에 구성된 모든 큐 정책에는 고유한 이름이 있어야 합니다.
    include-federated

    이 속성의 값이 false 로 설정되면 구성이 이미 제공된 소비자(즉, 페더레이션 대기열의 소비자)를 다시 변형시키지 않습니다. 이를 통해 대칭 또는 폐쇄 루프 토폴로지의 경우 작동하지 않는 소비자가 없으며 메시지는 시스템 전체에서 무한대로 흐르는 상황을 방지할 수 있습니다.

    닫기 루프 토폴로지가 없는 경우 이 속성의 값을 true 로 설정할 수 있습니다.You might set the value of this property to true if you do not have a closed-loop topology. 예를 들어 BrokerABrokerC 의 생산자가 있는 3개의 브로커, BrokerA,BrokerBBrokerC 체인이 있다고 가정합니다. 이 경우 BrokerB 에서 소비자를 BrokerA 에 다시 제공하려고 합니다.

    priority-adjustment
    소비자가 큐에 연결할 때 해당 우선 순위는 업스트림 소비자(즉, 페더레이션) 소비자가 생성될 때 사용됩니다. 연합 소비자의 우선 순위는 우선 순위 속성의 값에 의해 조정 됩니다. 이 속성의 기본값은 -1 이며, 이는 부하 분산 중에 로컬 소비자가 페더레이션 소비자보다 우선 순위를 지정할 수 있습니다. 그러나 필요에 따라 우선순위 조정의 값을 변경할 수 있습니다.
    transformer-ref
    변환기 구성의 이름입니다. 연합 메시지 전송 중에 메시지를 변환하려면 변환기 구성을 추가할 수 있습니다. Transformer 구성은 이 절차의 뒷부분에서 설명합니다.
  4. < queue-policy > 요소 내에서 큐 정책에서 주소를 포함 및 제외하는 address-matching 패턴을 추가합니다. 예를 들면 다음과 같습니다.

    <federations>
        <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9">
    
            <queue-policy name="news-queue-federation" include-federated="true" priority-adjustment="-5" transformer-ref="news-transformer">
    
                <include queue-match="#" address-match="queue.bbc.new" />
                <include queue-match="#" address-match="queue.usatoday" />
                <include queue-match="#" address-match="queue.news.#" />
    
                <exclude queue-match="#.local" address-match="#" />
    
            </queue-policy>
    
        </federation>
    </federations>
    include

    이 요소의 address-match 속성 값은 큐 정책에 포함할 주소를 지정합니다. 정확한 주소(예: queue.bbc.new 또는 queue.usatoday )를 지정할 수 있습니다. 또는 와일드카드 식을 사용하여 일치하는 주소 집합 을 지정할 수 있습니다. 이전 예에서 큐 정책에는 문자열 queue.news 로 시작하는 모든 주소 이름도 포함되어 있습니다.

    address-match 속성과 함께 queue-match 속성을 사용하여 큐 정책의 해당 주소에 특정 큐를 포함할 수 있습니다. address-match 속성과 마찬가지로 정확한 대기열 이름을 지정하거나 와일드카드 표현식을 사용하여 큐 세트 를 지정할 수 있습니다. 앞의 예제에서 숫자 기호(#) 와일드카드 문자는 각 주소 또는 주소 세트의 모든 큐가 큐 정책에 포함됨을 의미합니다.

    exclude
    이 요소의 address-match 속성 값은 큐 정책에서 제외할 주소를 지정합니다. 정확한 주소를 지정하거나 와일드카드 식을 사용하여 일치하는 주소 집합 을 지정할 수 있습니다. 앞의 예제에서 숫자 기호(#) 와일드카드 문자는 모든 주소에서 queue-match 속성과 일치하는 모든 큐가 제외됨을 의미합니다. 이 경우 .local 문자열로 끝나는 모든 큐는 제외됩니다. 이는 특정 대기열이 로컬 대기열로 유지되며 통합되지 않음을 나타냅니다.
  5. 페더레이션 요소 내에서 사용자 지정 변환기 구현을 참조하기 위해 변환기 요소를 추가합니다. 예를 들면 다음과 같습니다.

    <federations>
        <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9">
    
            <queue-policy name="news-queue-federation" include-federated="true" priority-adjustment="-5" transformer-ref="news-transformer">
    
                <include queue-match="#" address-match="queue.bbc.new" />
                <include queue-match="#" address-match="queue.usatoday" />
                <include queue-match="#" address-match="queue.news.#" />
    
                <exclude queue-match="#.local" address-match="#" />
    
            </queue-policy>
    
            <transformer name="news-transformer">
                <class-name>org.foo.NewsTransformer</class-name>
                <property key="key1" value="value1"/>
                <property key="key2" value="value2"/>
            </transformer>
    
        </federation>
    </federations>
    name
    변환기 구성의 이름입니다. 이 이름은 해당 브로커에서 고유해야 합니다. 이 이름을 주소 정책의 transformer-ref 속성에 대한 값으로 지정합니다.
    class-name

    org.apache.activemq.artemis.core.server.transformer.Transformer 인터페이스를 구현하는 사용자 정의 클래스의 이름입니다.

    transformer의 transform() 메서드는 메시지를 전송하기 전에 메시지와 함께 호출됩니다. 이를 통해 메시지 헤더 또는 본문이 통합되기 전에 변환할 수 있습니다.

    속성
    특정 변환기 구성에 대해 키-값 쌍을 유지하는 데 사용됩니다.
  6. 페더레이션 요소 내에서 하나 이상의 업스트림 요소를 추가합니다. 각 업스트림 요소는 해당 연결에 적용할 업스트림 브로커 연결 및 정책을 정의합니다. 예를 들면 다음과 같습니다.

    <federations>
        <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9">
    
            <upstream name="eu-east-1">
                <static-connectors>
                    <connector-ref>eu-east-connector1</connector-ref>
                </static-connectors>
                <policy ref="news-queue-federation"/>
            </upstream>
    
            <upstream name="eu-west-1" >
                <static-connectors>
                    <connector-ref>eu-west-connector1</connector-ref>
                </static-connectors>
                <policy ref="news-queue-federation"/>
            </upstream>
    
            <queue-policy name="news-queue-federation" include-federated="true" priority-adjustment="-5" transformer-ref="news-transformer">
    
                <include queue-match="#" address-match="queue.bbc.new" />
                <include queue-match="#" address-match="queue.usatoday" />
                <include queue-match="#" address-match="queue.news.#" />
    
                <exclude queue-match="#.local" address-match="#" />
    
            </queue-policy>
    
            <transformer name="news-transformer">
                <class-name>org.foo.NewsTransformer</class-name>
                <property key="key1" value="value1"/>
                <property key="key2" value="value2"/>
            </transformer>
    
        </federation>
    </federations>
    static-connectors
    로컬 브로커의 broker.xml 구성 파일에서 정의된 커넥터 요소를 참조하는 connector -ref 요소 목록이 포함되어 있습니다. 커넥터는 발신 연결에 사용할 전송(TCP, SSL, HTTP 등) 및 서버 연결 매개 변수(host, port 등)를 정의합니다. 이 절차의 다음 단계에서는 페더레이션 대기열 구성의 정적 연결 요소에서 참조한 커넥터 를 추가하는 방법을 보여줍니다.
    policy-ref
    업스트림 브로커에 적용되는 다운스트림 브로커에 구성된 큐 정책의 이름입니다.

    업스트림 요소에 대해 지정할 수 있는 추가 옵션은 아래에 설명되어 있습니다.

    name
    업스트림 브로커 구성의 이름입니다. 이 예에서 이름은 eu-east-1eu-west-1 이라는 업스트림 브로커에 해당합니다.
    user
    업스트림 브로커에 대한 연결을 생성할 때 사용할 사용자 이름입니다. 지정하지 않으면 페더레이션 요소의 구성에 지정된 공유 사용자 이름이 사용됩니다.
    암호
    업스트림 브로커에 대한 연결을 생성할 때 사용할 암호입니다. 지정하지 않으면 페더레이션 요소의 구성에 지정된 공유 암호가 사용됩니다.
    call-failover-timeout
    call-timeout 과 유사하지만 장애 조치(failover) 시도 중에 호출이 수행됩니다. 기본값은 -1 이며, 이는 시간 초과가 비활성화됨을 의미합니다.
    call-timeout
    페더레이션 연결은 차단 호출인 패킷을 전송할 때 원격 브로커의 응답을 대기하는 시간(밀리초)입니다. 이 시간이 경과하면 연결에서 예외가 발생합니다. 기본값은 30000 입니다.
    check-period
    로컬 브로커가 원격 브로커로 보내는 연속 "보통" 메시지 사이의 기간(밀리초)은 페더레이션 연결의 상태를 확인합니다. 페더레이션 연결이 정상이면 원격 브로커는 각 keep-alive 메시지에 응답합니다. 연결이 비정상인 경우 다운스트림 브로커가 업스트림 브로커에서 응답을 수신하지 못하면 회로 차단기 라는 메커니즘을 사용하여 페더레이션 소비자를 차단합니다. 자세한 내용은 circuit-breaker-timeout 매개변수에 대한 설명을 참조하십시오. check-period 매개변수의 기본값은 30000 입니다.
    circuit-breaker-timeout
    다운스트림과 업스트림 브로커 간의 단일 연결은 많은 연합 큐와 주소 소비자에 의해 공유될 수 있습니다. 브로커 간의 연결이 손실되는 경우 각 연합 소비자는 동시에 다시 연결을 시도할 수 있습니다. 이를 방지하기 위해 회로 차단기 라는 메커니즘은 소비자를 차단합니다. 지정된 시간 초과 값이 경과하면 회로 차단기가 연결을 다시 만듭니다. 성공하면 소비자는 차단 해제됩니다. 그렇지 않으면 회로 차단기가 다시 적용됩니다.
    connection-ttl
    원격 브로커에서 메시지 수신을 중지하면 페더레이션 연결이 활성 상태로 유지됩니다. 기본값은 60000 입니다.
    discovery-group-ref
    업스트림 브로커에 대한 연결에 대한 정적 커넥터를 정의하는 대신 이 요소를 사용하여 broker.xml 구성 파일의 다른 곳에서 이미 구성된 검색 그룹을 지정할 수 있습니다. 특히 이 요소의 discovery-group-name 속성에 대한 값으로 기존 검색 그룹을 지정합니다. 검색 그룹에 대한 자세한 내용은 14.1.5절. “브로커 검색 방법” 을 참조하십시오.
    ha
    업스트림 브로커 연결에 대해 고가용성을 활성화할지 여부를 지정합니다. 이 매개변수의 값이 true 로 설정된 경우 로컬 브로커는 업스트림 클러스터에서 사용 가능한 모든 브로커에 연결할 수 있으며 라이브 업스트림 브로커가 종료되면 백업 브로커로 자동으로 실패합니다. 기본값은 false입니다.
    initial-connect-attempts
    다운스트림 브로커가 업스트림 브로커에 연결하려고 하는 초기 시도 수입니다. 연결이 설정되지 않은 경우 업스트림 브로커는 영구적으로 오프라인 상태로 간주됩니다. 다운스트림 브로커는 더 이상 메시지를 업스트림 브로커로 라우팅하지 않습니다. 기본값은 -1 이며 이는 제한이 없음을 의미합니다.
    max-retry-interval
    원격 브로커에 연결할 때 후속 재시도 시도 사이의 최대 시간(밀리초)입니다. 기본값은 2000 입니다.
    reconnect-attempts
    다운스트림 브로커가 연결에 실패한 경우 업스트림 브로커에 다시 연결을 시도하는 횟수입니다. 연결을 재설정하지 않고 이 값에 도달하면 업스트림 브로커는 영구적으로 오프라인 상태로 간주됩니다. 다운스트림 브로커는 더 이상 메시지를 업스트림 브로커로 라우팅하지 않습니다. 기본값은 -1 이며 이는 제한이 없음을 의미합니다.
    retry-interval
    원격 브로커에 대한 연결이 실패한 경우 후속 재시도 시도 사이의 기간(밀리초)입니다. 기본값은 500 입니다.
    retry-interval-multiplier
    retry-interval 매개 변수의 값에 적용되는 요인을 곱합니다. 기본값은 1 입니다.
    share-connection
    동일한 브로커에 대해 다운스트림 및 업스트림 연결이 모두 구성된 경우 다운스트림 및 업스트림 구성 모두 이 매개 변수의 값을 true 로 설정하는 경우 동일한 연결이 공유됩니다. 기본값은 false입니다.
  7. 로컬 브로커에서 원격 브로커에 커넥터를 추가합니다. 이는 연합 주소 구성의 정적 연결 요소에서 참조되는 커넥터 입니다. 예를 들면 다음과 같습니다.

    <connectors>
       <connector name="eu-west-1-connector">tcp://localhost:61616</connector>
       <connector name="eu-east-1-connector">tcp://localhost:61617</connector>
    </connectors>
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.