4.21.6. 다운스트림 주소 연합 구성
다음 예제에서는 독립 실행형 브로커에 대한 다운스트림 주소 페더레이션을 구성하는 방법을 보여줍니다.
다운스트림 주소 페더레이션을 사용하면 하나 이상의 원격 브로커가 로컬 브로커에 다시 연결하는 데 사용하는 로컬 브로커에 구성을 추가할 수 있습니다. 이 접근 방식의 장점은 모든 페더레이션 구성을 단일 브로커에 유지할 수 있다는 것입니다. 예를 들어 허브 및 스포크 토폴로지에 유용한 접근법이 될 수 있습니다.
다운스트림 주소 페더레이션은 페더레이션 연결과 업스트림 주소 구성의 방향을 역전합니다. 따라서 구성에 원격 브로커를 추가하면 다운스트림 브로커로 간주됩니다. 다운스트림 브로커는 구성의 연결 정보를 사용하여 로컬 브로커로 다시 연결합니다. 이 정보는 업스트림으로 간주됩니다. 이 예제는 원격 브로커에 대한 구성을 추가할 때 이 예제의 뒷부분에서 설명합니다.
사전 요구 사항
- 업스트림 주소 페더레이션의 구성에 대해 잘 알고 있어야 합니다. 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>
주소 정책 구성을 추가합니다. 예를 들면 다음과 같습니다.
<federations> ... <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9"> <address-policy name="news-address-federation" max-hops="1" auto-delete="true" auto-delete-delay="300000" auto-delete-message-count="-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>
전송 전에 메시지를 변환하려면 변환기 구성을 추가합니다. 예를 들면 다음과 같습니다.
<federations> ... <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9"> <address-policy name="news-address-federation" max-hops="1" auto-delete="true" auto-delete-delay="300000" auto-delete-message-count="-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>
각 원격 브로커에 대해
downstream
요소를 추가합니다. 예를 들면 다음과 같습니다.<federations> ... <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9"> <downstream name="eu-east-1"> <static-connectors> <connector-ref>eu-east-connector1</connector-ref> </static-connectors> <transport-connector-ref>netty-connector</transport-connector-ref> <policy ref="news-address-federation"/> </downstream> <downstream name="eu-west-1" > <static-connectors> <connector-ref>eu-west-connector1</connector-ref> </static-connectors> <transport-connector-ref>netty-connector</transport-connector-ref> <policy ref="news-address-federation"/> </downstream> <address-policy name="news-address-federation" max-hops="1" auto-delete="true" auto-delete-delay="300000" auto-delete-message-count="-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>
이전 구성에 표시된 대로 원격 브로커는 이제 로컬 브로커의 다운스트림으로 간주됩니다. 다운스트림 브로커는 구성의 연결 정보를 사용하여 로컬(즉, 업스트림) 브로커에 다시 연결합니다.
로컬 브로커에서 로컬 및 원격 브로커가 사용하는 커넥터 및 수락자를 추가하여 페더레이션 연결을 설정합니다. 예를 들면 다음과 같습니다.
<connectors> <connector name="netty-connector">tcp://localhost:61616</connector> <connector name="eu-west-1-connector">tcp://localhost:61616</connector> <connector name="eu-east-1-connector">tcp://localhost:61617</connector> </connectors> <acceptors> <acceptor name="netty-acceptor">tcp://localhost:61616</acceptor> </acceptors>
connector name="netty-connector"
- 로컬 브로커가 원격 브로커로 전송하는 커넥터 구성입니다. 원격 브로커는 이 구성을 사용하여 다시 로컬 브로커에 연결합니다.
connector name="eu-west-1-connector"
,connector name="eu-east-1-connector"
- 원격 브로커에 연결합니다. 로컬 브로커는 이러한 커넥터를 사용하여 원격 브로커에 연결하고 원격 브로커가 로컬 브로커에 다시 연결하는 데 필요한 구성을 공유합니다.
acceptor name="netty-acceptor"
- 원격 브로커가 로컬 브로커에 다시 연결하는 데 사용하는 커넥터에 해당하는 로컬 브로커의 수락입니다.