

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 代理程式的 Amazon MQ 網路
<a name="network-of-brokers"></a>

Amazon MQ 支援 ActiveMQ 的代理程式網路功能。

 代理程式網路由多個同時作用中單一執行個體代理程式或作用中/待命代理程式組成。建立中介裝置網路可以提高可用性、容錯能力，以及與多個中介裝置執行個體進行負載平衡。

## 中介裝置網路的運作方式為何？
<a name="how-does-it-work"></a>

 透過使用網路*連接器將一個中介裝置連接到另一個中介裝置來建立中介裝置網路*。網路連接器提供從一個代理程式到另一個代理程式的隨需訊息。網路連接器在代理程式組態中設定為*非雙工*或*雙工*連線。如果是非雙工連線，則訊息只會從一個代理程式轉傳到其他代理程式。對於雙工連線，訊息會在兩個代理程式之間雙向轉送。

 如果網路連接器設定為雙工，訊息也會從 *Broker2* 轉送到 *Broker1*。

 您可以在中介裝置網路中使用非雙工和雙工連線。您可能想要將雙工連線引入另一個代理程式，以改善流量，或避免提高限制。雙工連線也適用於從內部部署到 Amazon MQ 受管代理程式的部分遷移。

## 代理程式網路如何處理登入資料？
<a name="how-does-it-handle-credentials"></a>

網路中的代理程式 A 若要連線到代理程式 B，代理程式 A 必須使用有效的登入資料，就如同其他任何生產者或使用者。您必須先在代理程式 A 上建立使用者，其值與代理程式 B 上的另一個使用者相同 (這些是共用相同使用者名稱和密碼值的*獨立、唯一*使用者)，而不是在代理程式 A 的 `<networkConnector>` 組態中提供密碼。當您在 `<networkConnector>` 組態中指定 `userName` 屬性時，Amazon MQ 將會在執行時間自動新增密碼。

**重要**  
不要指定 `<networkConnector>` 的 `password` 屬性。我們不建議在代理程式的組態檔案中儲存純文字密碼，因為這樣在 Amazon MQ 主控台中就看得到密碼。如需詳細資訊，請參閱[步驟 2：設定代理程式的網路連接器](amazon-mq-creating-configuring-network-of-brokers.md#creating-configuring-network-of-brokers-configure-network-connectors)。

## 跨區域
<a name="how-to-configure-cross-region"></a>

若要設定跨越 AWS 區域的代理程式網路，請在這些區域中部署代理程式，並將網路連接器設定為這些代理程式的端點。

![跨區域網狀拓撲](http://docs.aws.amazon.com/zh_tw/amazon-mq/latest/developer-guide/images/amazon-mq-nob-cross-region.png)


若要像這個範例一樣設定代理程式網路，您可以將 `networkConnectors` 項目新增到 *Broker1* 和 *Broker4* 組態，以參考這些代理程式的線路層級端點 。

*Broker1 的網路連接器：*

```
<networkConnectors>
    <networkConnector name="1_to_2" userName="myCommonUser" duplex="true"
        uri="static:(ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-2.mq.us-west-2.amazonaws.com:61617)"/>
    <networkConnector name="1_to_3" userName="myCommonUser" duplex="true"
        uri="static:(ssl://b-743c885d-2244-4c95-af67-a85017ff234e-3.mq.us-east-2.amazonaws.com:61617)"/>
    <networkConnector name="1_to_4" userName="myCommonUser" duplex="true"
        uri="static:(ssl://b-62a7fb31-d51c-466a-a873-905cd660b553-4.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
```

*Broker2 的網路連接器：*

```
<networkConnectors>
    <networkConnector name="2_to_3" userName="myCommonUser" duplex="true"
        uri="static:(ssl://b-743c885d-2244-4c95-af67-a85017ff234e-3.mq.us-east-2.amazonaws.com:61617)"/>
</networkConnectors>
```

*Broker4 的網路連接器：*

```
<networkConnectors>
    <networkConnector name="4_to_3" userName="myCommonUser" duplex="true"
        uri="static:(ssl://b-743c885d-2244-4c95-af67-a85017ff234e-3.mq.us-east-2.amazonaws.com:61617)"/>
    <networkConnector name="4_to_2" userName="myCommonUser" duplex="true"
        uri="static:(ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-2.mq.us-west-2.amazonaws.com:61617)"/>      
</networkConnectors>
```

## 搭配傳輸連接器的動態容錯移轉
<a name="transport-connectors"></a>

除了設定 `networkConnector` 元素，您還可以將代理程式 `transportConnector` 選項設定成啟用動態容錯移轉，並在網路中新增或移除代理程式時重新平衡連線。

```
<transportConnectors>
  <transportConnector name="openwire" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true"/>
</transportConnectors>
```

在此範例中，`updateClusterClients` 和 `rebalanceClusterClients` 都會設定為 `true`。在這種情況下，用戶端將會獲得網路內代理程式清單，並會在新的代理程式加入時要求重新平衡。

可用選項：
+ `updateClusterClients`：將有關代理程式網路拓撲變更的資訊傳遞給用戶端。
+ `rebalanceClusterClients`：將在代理程式網路中新增代理程式時，造成用戶端重新平衡所有的代理程式。
+ `updateClusterClientsOnRemove`：在代理程式離開代理程式網路時，搭配拓撲資訊更新用戶端。

當 `updateClusterClients` 設為 True 時，用戶端即可設定為連接至代理程式網路中的單一代理程式。

```
failover:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617)
```

當新的代理程式連線時，它將會收到網路中全部代理程式的 URI 清單。如果與代理程式的連線失敗，則連線會動態切換到已連線的其中一個代理程式。

如需關於容錯移轉的詳細資訊，請參閱 Active MQ 文件中的[容錯移轉適用的代理程式選項](http://activemq.apache.org/failover-transport-reference.html#FailoverTransportReference-Broker-sideOptionsforFailover)。