本文補充說明不同類型執行個體,在使用公網存取點串連開源鑒權執行個體時,用戶端需要額外配置的執行個體 ID。
適用範圍
使用開源鑒權執行個體的公網存取點串連服務端。
前提條件
通過公網訪問執行個體時必須啟用公網 IP 白名單,並將用戶端實際公網出口 IP 位址或 CIDR 位址區段加入白名單。僅白名單範圍內的用戶端可以訪問執行個體。
串連前,請完成以下配置:
在執行個體的使用者和許可權管理頁面建立自訂使用者名稱和密碼,並為使用者授予目標 Vhost 及相關資源的操作許可權。具體操作,請參見使用者和許可權管理。
將用戶端的實際公網出口 IP 位址或 CIDR 位址區段加入執行個體的公網 IP 白名單。具體操作,請參見公網IP和VPCID白名單。
在实例详情頁面擷取執行個體 ID 和公网存取點。請直接複製控制台展示的公網存取點,不要自行拼接網域名稱。
用戶端設定執行個體 ID
公網接入時,不同版本的用戶端配置要求如下:
執行個體系列 | 具體版本 | 是否需要傳入執行個體 ID | 說明 |
Serverless系列 | (独享)预留+弹性 | 否 | 服務端可以自動識別目標執行個體。 |
Serverless系列 | (共享)预留+弹性 | 是 | 用戶端必須通過 AMQP Client Properties 指定目標執行個體。 |
Serverless系列 | (共享)按累积量 | 是 | 用戶端必須通過 AMQP Client Properties 指定目標執行個體。 |
預付費系列 | 铂金版 | 否 | 服務端可以自動識別目標執行個體。 |
預付費系列 | 企业版 | 是 | 用戶端必須通過 AMQP Client Properties 指定目標執行個體。 |
Java 配置樣本
使用 Serverless 系列的(共用)預留+彈性或(共用)按累積量規格,或者使用預付費企業版時,按照步驟三:調用SDK收發訊息配置公網存取點、使用者名稱、密碼和 Vhost 後,在調用 newConnection() 前增加以下配置:
String instanceId = "rabbitmq-cn-xxxxxxxx";
// factory 已按常規方式配置公網存取點、使用者名稱、密碼和 Vhost。
Map<String, Object> clientProperties =
new HashMap<String, Object>(factory.getClientProperties());
clientProperties.put("aliyun_rabbitmq_instance_id", instanceId);
//部份執行個體需要如此設定
//clientProperties.put("connection_name", "{__rabbitmq-cn-xxxxx__}");//todo 替換成真實執行個體ID。
factory.setClientProperties(clientProperties);
Connection connection = factory.newConnection();注意事項:
aliyun_rabbitmq_instance_id的值必須是控制台展示的執行個體 ID,而不是公網存取點。(共享)预留+弹性、(共享)按累积量和預付費企业版必須在建立 Connection 前設定該屬性。
複製並保留
factory.getClientProperties()中的預設屬性,避免覆蓋 Java Client 內建的用戶端資訊。(独享)预留+弹性和預付費铂金版無需設定該屬性;如果主動設定,屬性值必須與當前執行個體 ID 一致。
串連失敗時檢查
如果公網串連被拒絕或返回 AccessAccountDataError 錯誤,請依次確認:
用戶端實際公網出口 IP 已加入目標執行個體的公網 IP 白名單。
使用(共享)预留+弹性、(共享)按累积量或預付費企业版時,確認
aliyun_rabbitmq_instance_id已設定且與目標執行個體 ID 完全一致;(独享)预留+弹性和預付費铂金版無需設定該屬性。自訂使用者名稱和密碼正確,並且使用者已獲得目標 Vhost 的存取權限。
用戶端配置的是執行個體的公網存取點,而不是 OpenAPI 服務接入地址。
網路逾時、資源許可權或常規 SDK 配置問題,請參見串連失敗的可能原因及解決辦法。