連結至 Amazon MQ - Amazon MQ

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

連結至 Amazon MQ

以下設計模式可提升應用程式連線至 Amazon MQ 代理程式的效益。

永不修改或刪除 Amazon MQ 彈性網路界面

當您第一次建立 Amazon MQ 代理程式時,Amazon MQ 會在 Virtual Private Cloud (VPC)中您的帳戶之下佈建彈性網路界面,因此,需要一些 EC2 許可。此網路界面可讓您的用戶端 (生產者或消費者) 與 Amazon MQ 代理程式通訊。儘管此網路界面是您帳戶 VPC 的一部分,因此被視為在 Amazon MQ 的服務範圍內。

警告

您不得修改或刪除這個網路界面。修改或刪除網路界面可能導致永久遺失 VPC 與代理程式之間的連線。

一律使用連線集區

在具有單一生產者和單一消費者的案例 (例如 Getting Started with Amazon MQ 教學課程) 中,您可以針對每個生產者和消費者使用單一 ActiveMQConnectionFactory 類別。例如:

// Create a connection factory. final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint); // Pass the sign-in credentials. connectionFactory.setUserName(activeMqUsername); connectionFactory.setPassword(activeMqPassword); // Establish a connection for the consumer. final Connection consumerConnection = connectionFactory.createConnection(); consumerConnection.start();

不過,在具有多個生產者和消費者的更真實案例中,為多個生產者建立大量連線可能成本昂貴且效率不彰。在這些案例中,您應該使用 PooledConnectionFactory 類別,將多個生產者請求分組。例如:

注意

訊息消費者不應使用 PooledConnectionFactory 類別。

// Create a connection factory. final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint); // Pass the sign-in credentials. connectionFactory.setUserName(activeMqUsername); connectionFactory.setPassword(activeMqPassword); // Create a pooled connection factory. final PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(); pooledConnectionFactory.setConnectionFactory(connectionFactory); pooledConnectionFactory.setMaxConnections(10); // Establish a connection for the producer. final Connection producerConnection = pooledConnectionFactory.createConnection(); producerConnection.start();

一律使用容錯移轉傳輸來連接到多個代理程式端點

如果您需要將應用程式連接到多個代理程式端點 (例如,當您使用作用中/待命部署模式時,或當您從內部部署訊息代理程式遷移至 Amazon MQ 時),請使用容錯移轉傳輸,允許消費者隨機連接到其中一個。例如:

failover:(ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617,ssl://b-9876l5k4-32ji-109h-8gfe-7d65c4b132a1-2.mq.us-east-2.amazonaws.com:61617)?randomize=true

避免使用訊息選取器

您可以使用 JMS 選取器,將篩選條件附加到主題訂閱 (根據訊息的內容將訊息路由到消費者)。不過,使用 JMS 選取器會填滿 Amazon MQ 代理程式的篩選緩衝區,因而阻止它篩選訊息。

一般來說,請避免讓消費者路由訊息,因為為了讓消費者和生產者的去耦最佳化,消費者和生產者應該是暫時性。

比起耐久訂閱,更喜歡虛擬目的地

例如,耐久訂閱可協助確保消費者在遺失的連線還原之後,會收到所有發佈到主題的訊息。不過,使用耐久訂閱也會排除競爭消費者的使用,而且可能發生大規模的效能問題。請考慮改用虛擬目的地

如果使用 Amazon VPC 對等互連,請避免使用 CIDR 範圍 10.0.0.0/16 內的用戶端 IP

如果您要在內部部署基礎設施與 Amazon MQ 代理程式之間設定 Amazon VPC 對等互連,則不得透過 CIDR 範圍 10.0.0.0/16 內的 IP 設定用戶端連線。