4.21.5. 업스트림 주소 연합 구성
다음 예제에서는 독립 실행형 브로커 간에 업스트림 주소 페더레이션을 구성하는 방법을 보여줍니다. 이 예제에서는 로컬 (즉, 다운스트림 ) 브로커에서 일부 원격 (즉, 업스트림) 브로커에 대한 페더레이션을 구성합니다.
사전 요구 사항
- 다음 예제에서는 독립 실행형 브로커 간에 주소 페더레이션을 구성하는 방법을 보여줍니다. 그러나 브로커 클러스터에 대한 페더레이션 구성 요구 사항도 잘 알고 있어야 합니다. 자세한 내용은 4.21.4절. “브로커 클러스터에 대한 페더레이션 구성”의 내용을 참조하십시오.
절차
-
<
broker-instance-dir> /etc/broker.xml
구성 파일을 엽니다. <
feder
추가합니다. 예를 들면 다음과 같습니다.ation> 요소를 포함하는 새 <federations
> 요소를<federations> <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9"> </federation> </federations>
name
- 페더레이션 구성의 이름입니다. 이 예에서 name은 로컬 브로커의 이름에 해당합니다.
user
- 업스트림 브로커에 연결하기 위한 공유 사용자 이름입니다.
암호
- 업스트림 브로커와의 연결에 대한 공유 암호입니다.
참고원격 브로커에 대해 사용자 및 암호 자격 증명이 다른 경우 구성에 추가할 때 해당 브로커의 인증 정보를 별도로 지정할 수 있습니다. 이 내용은 이 절차의 뒷부분에서 설명합니다.
페더레이션 요소 내에서
<
;address-policy>
; 요소를 추가합니다. 예를 들면 다음과 같습니다.<federations> <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9"> <address-policy name="news-address-federation" auto-delete="true" auto-delete-delay="300000" auto-delete-message-count="-1" enable-divert-bindings="false" max-hops="1" transformer-ref="news-transformer"> </address-policy> </federation> </federations>
name
- 주소 정책의 이름입니다. 브로커에 구성된 모든 주소 정책에는 고유한 이름이 있어야 합니다.
자동 삭제
-
주소 페더레이션 중에 로컬 브로커는 동적으로 원격 주소에 영구 큐를 생성합니다.
auto-delete
속성의 값은 로컬 브로커의 연결이 끊어지면 원격 큐와 auto-delete-delay 및
속성에도 도달했는지 여부를 지정합니다. 동적으로 생성된 큐의 정리를 자동화하려는 경우 이 옵션이 유용합니다. 또한 로컬 브로커의 연결이 끊어진 경우 원격 브로커에서 메시지를 빌드하지 않으려는 경우에도 유용합니다. 그러나 연결이 끊긴 동안 메시지가 항상 로컬 브로커에 대해 큐에 남아 있도록 하려면 이 옵션을auto-delete
-message-countfalse
로 설정하여 로컬 브로커에서 메시지 손실을 방지할 수 있습니다. auto-delete-delay
- 로컬 브로커의 연결이 끊어진 후 이 속성의 값은 동적으로 생성된 원격 큐를 자동으로 삭제하기 전에 시간(밀리초)을 지정합니다.
auto-delete-message-count
- 로컬 브로커의 연결이 끊어진 후 이 속성의 값은 큐를 자동으로 삭제할 수 있기 전에 동적으로 생성된 원격 큐에 있을 수 있는 최대 메시지 수를 지정합니다.
enable-divert-bindings
-
이 속성을
true
로 설정하면 개별 바인딩이 요청에 대해 수신 대기됩니다. 주소 정책의 포함된 주소와 일치하는 주소가 포함된 다양한 바인딩이 있는 경우, 요약의 전달 주소와 일치하는 큐 바인딩은 수요가 생성됩니다. 기본값은false
입니다. max-hops
- 페더레이션 중에 메시지를 만들 수 있는 최대 홉 수입니다. 특정 토폴로지에는 이 속성에 대한 특정 값이 필요합니다. 이러한 요구 사항에 대한 자세한 내용은 4.21.2절. “주소 연합을 위한 공통 토폴로지” 을 참조하십시오.
transformer-ref
- 변환기 구성의 이름입니다. 연합 메시지 전송 중에 메시지를 변환하려면 변환기 구성을 추가할 수 있습니다. Transformer 구성은 이 절차의 뒷부분에서 설명합니다.
<
address-policy
> 요소 내에서 주소 정책에서 주소를 포함 및 제외하는 address-matching 패턴을 추가합니다. 예를 들면 다음과 같습니다.<federations> <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9"> <address-policy name="news-address-federation" auto-delete="true" auto-delete-delay="300000" auto-delete-message-count="-1" enable-divert-bindings="false" max-hops="1" transformer-ref="news-transformer"> <include address-match="queue.bbc.new" /> <include address-match="queue.usatoday" /> <include address-match="queue.news.#" /> <exclude address-match="queue.news.sport.#" /> </address-policy> </federation> </federations>
include
-
이 요소의
address-match
속성 값은 주소 정책에 포함할 주소를 지정합니다. 정확한 주소(예:queue.bbc.new
또는queue.usatoday
)를 지정할 수 있습니다. 또는 와일드카드 식을 사용하여 일치하는 주소 집합 을 지정할 수 있습니다. 이전 예에서 address 정책에는 문자열queue.news
로 시작하는 모든 주소 이름도 포함되어 있습니다. exclude
-
이 요소의
address-match
속성 값은 주소 정책에서 제외할 주소를 지정합니다. 정확한 주소 이름을 지정하거나 와일드카드 식을 사용하여 일치하는 주소 집합 을 지정할 수 있습니다. 이전 예에서 address 정책은 stringqueue.news.sport
로 시작하는 모든 주소 이름을 제외합니다.
(선택 사항) 페더레이션 요소에서 사용자 지정
변환기
구현을 참조하는 변환기 요소를 추가합니다.예를 들면 다음과 같습니다.
<federations> <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9"> <address-policy name="news-address-federation" auto-delete="true" auto-delete-delay="300000" auto-delete-message-count="-1" enable-divert-bindings="false" max-hops="1" transformer-ref="news-transformer"> <include address-match="queue.bbc.new" /> <include address-match="queue.usatoday" /> <include address-match="queue.news.#" /> <exclude address-match="queue.news.sport.#" /> </address-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()
메서드는 메시지를 전송하기 전에 메시지와 함께 호출됩니다. 이를 통해 메시지 헤더 또는 본문이 통합되기 전에 변환할 수 있습니다.속성
- 특정 변환기 구성에 대해 키-값 쌍을 유지하는 데 사용됩니다.
페더레이션 요소
내에서 하나
이상의업스트림
요소를 추가합니다. 각업스트림
요소는 원격 브로커와 해당 연결에 적용할 정책을 정의합니다. 예를 들면 다음과 같습니다.<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-address-federation"/> </upstream> <upstream name="eu-west-1" > <static-connectors> <connector-ref>eu-west-connector1</connector-ref> </static-connectors> <policy ref="news-address-federation"/> </upstream> <address-policy name="news-address-federation" auto-delete="true" auto-delete-delay="300000" auto-delete-message-count="-1" enable-divert-bindings="false" max-hops="1" transformer-ref="news-transformer"> <include address-match="queue.bbc.new" /> <include address-match="queue.usatoday" /> <include address-match="queue.news.#" /> <exclude address-match="queue.news.sport.#" /> </address-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
-refstatic-connectors
요소에서 참조되는 커넥터를 추가하는 방법을 보여줍니다. policy-ref
- 업스트림 브로커에 적용되는 다운스트림 브로커에 구성된 주소 정책의 이름입니다.
업스트림
요소에 대해 지정할 수 있는 추가 옵션은 아래에 설명되어 있습니다.name
-
업스트림 브로커 구성의 이름입니다. 이 예에서 이름은
eu-east-1
및eu-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
속성에 대한 값으로 기존 검색 그룹을 지정합니다. 검색 그룹에 대한 자세한 내용은 16.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
입니다.
로컬 브로커에서 원격 브로커에 커넥터를 추가합니다. 이는 연합 주소 구성의
정적 연결 요소에서 참조되는 커넥터
입니다. 예를 들면 다음과 같습니다.<connectors> <connector name="eu-west-1-connector">tcp://localhost:61616</connector> <connector name="eu-east-1-connector">tcp://localhost:61617</connector> </connectors>