搜索

4.21.6. 配置下游地址联合

download PDF

以下示例演示了如何为独立代理配置下游地址联合。

通过下游地址联合,您可以在本地代理中添加一个或多个远程代理用来连接到本地代理的配置。这种方法的优势在于,您可以在单个代理上保持所有联合配置。这可能是对 hub-and-spoke 拓扑的一个实用方法,例如:

注意

下游地址联合会反转连接与上游地址配置的方向。因此,当您在配置中添加远程代理时,这些代理被视为 下游 代理。下游代理使用配置中的连接信息来连接本地代理,现在被视为是上游的。在这个示例中会对此进行说明,当您为远程代理添加配置时。

先决条件

步骤

  1. 在本地代理上,打开 <broker-instance-dir>/etc/broker.xml 配置文件。
  2. 添加包含 <federation> 元素的 <federations> 元素。例如:

    <federations>
        <federation name="eu-north-1" user="federation_username" password="32a10275cf4ab4e9">
        </federation>
    </federations>
  3. 添加地址策略配置。例如:

    <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>
  4. 如果要在传输前转换信息,请添加转换器配置。例如:

    <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>
  5. 为每个远程代理添加 下游 元素。例如:

    <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>

    如前面的配置中所示,远程代理现在被视为本地代理的下游。下游代理使用配置中的连接信息返回本地(即 上游)代理。

  6. 在本地代理中,添加由本地和远程代理使用的连接器和接收器,以建立联合连接。例如:

    <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"
    本地代理发送到远程代理的连接器配置。远程代理使用此配置来连接本地代理。
    连接器名称="eu-west-1-connector", connector name="eu-east-1-connector"
    远程代理连接器。本地代理使用这些连接器连接到远程代理,并共享远程代理需要连接本地代理的配置。
    acceptor name="netty-acceptor"
    接受与远程代理用来连接到本地代理的连接器相对应的本地代理。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.