將消息隊列從 Microsoft Azure 服務總線遷移到 Amazon SQS - AWS 方案指引

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

將消息隊列從 Microsoft Azure 服務總線遷移到 Amazon SQS

創建者尼莎甘比希爾 () AWS

R 類型:重新平台

來源:使用 Azure 服務總線隊列的應用程序

目標:Amazon SQS

創建者:AWS

環境:PoC 或試點

技術:Web 和移動應用程序; 遷移

工作負載:Microsoft

AWS服務:Amazon SQS

Summary

此模式描述了如何遷移. NET框架或. NET從使用 Microsoft Azure 服務總線隊列消息傳遞平台到 Amazon 簡單隊列服務(AmazonSQS)的核心 Web 或控制台應用程序。

應用程式會使用訊息傳送服務,將資料傳送至其他應用程式,以及從中接收資料 這些服務有助於在雲端中建置分離、可高度擴充的微服務、分散式系統和無伺服器應用程式。

Azure 服務匯流排佇列是支援佇列和發佈/訂閱訊息的更廣泛 Azure 通訊基礎結構的一部分。 

Amazon SQS 是全受管訊息佇列服務,可讓您分離和擴展微型服務、分散式系統和無伺服器應用程式。Amazon SQS 消除了與管理和操作訊息導向中介軟體相關的複雜性和開銷,並讓開發人員能夠專注於差異化工作。使用 AmazonSQS,您可以在任何磁碟區的軟體元件之間傳送、存放和接收訊息,而不會遺失訊息或需要提供其他服務。

先決條件和限制

先決條件

  • 活躍AWS帳戶 

  • 一個. NET框架或. NET使用 Azure 服務匯流排佇列的核心 Web 或主控台應用程式 (附加的範例程式碼)

產品版本

  • 。 NET框架 3.5 或更高版本,或. NET核心版 1.0.1、2.0.0 版或更新版本

架構

源, 技術, 堆棧

  • 一個. NET(核心或架構) 使用 Azure 服務匯流排佇列傳送訊息的 Web 或主控台應用程式

目標技術堆疊

  • Amazon SQS

工具

工具

  • Microsoft Visual Studio

Code

若要為 Amazon 建立AWS身分和存取管理 (IAM) 政策SQS:

1. 登入AWS管理主控台,然後在的開啟IAM主控台https://console.aws.amazon.com/iam/

2. 在左邊的導覽窗格中,選擇 Policies (政策),然後選擇 Create policy (建立政策)。

3. 選擇索JSON引標籤,然後貼上下列程式碼:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:GetQueueUrl", "sqs:ChangeMessageVisibility", "sqs:SendMessageBatch", "sqs:ReceiveMessage", "sqs:SendMessage", "sqs:GetQueueAttributes", "sqs:ListQueueTags", "sqs:ListDeadLetterSourceQueues", "sqs:DeleteMessageBatch", "sqs:PurgeQueue", "sqs:DeleteQueue", "sqs:CreateQueue", "sqs:ChangeMessageVisibilityBatch", "sqs:SetQueueAttributes" ], "Resource": "arn:aws:sqs:*:<AccountId>:*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "sqs:ListQueues", "Resource": "*" } ] }

4. 選擇 [檢閱原則],輸入名稱,然後選擇 [建立原則]。

5. 將新建立的原則附加至您現有的IAM角色,或建立新角色。

史诗

任務描述所需技能
為 Amazon 創建IAM政策SQS。

創建將提供訪問 Amazon 的IAM政策SQS。如需原則範例,請參閱「程式碼」一節。

系統工程師
建立設AWS定檔。

透過執行 PowerShell 指令的AWS工具 Set-來建立新設定檔AWSCredential。此命令會將您的存取金鑰和密鑰儲存在您指定的設定檔名稱下的預設認證檔案中。將您之前創建的 Amazon SQS 政策與此帳戶鏈接。保留AWS存取金鑰 ID 和秘密存取金鑰。在接下來的步驟中將需要這些步驟。

系統工程師
建立 SQS 佇列。

您可以建立標準佇列或先進先出 (FIFO) 佇列。如需指示,請參閱「參照」一節中的連結。

系統工程師
任務描述所需技能
安裝 AWS Toolkit for Visual Studio。

這個工具組是 Microsoft Visual Studio 的擴充功能,讓您可以更輕鬆地建置和部署。 NET中的應用程式AWS。如需安裝和使用說明,請參閱「參考資料」一節中的連結。

应用开发人
安裝 AWSSDK. SQS NuGet 包裝。

您可以安裝 AWSSDK。 SQS通過在 Visual Studio 中選擇「管理 Package」或通過運行命令「安裝 NuGet AWSSDK包。 SQS」.

应用开发人
在 AWSCredentials 您的. NET應用程序。

附件中的示例應用程序顯示了如何創建繼承自 AWSCredentials的 B asicAWSCredentials 對象。您可以使用先前的存取金鑰 ID 和秘密存取金鑰,或讓物件在執行階段從 .aws 資料夾中挑選這些金鑰做為使用者設定檔的一部分。

应用开发人
創建一個SQS客戶端對象。

建立的SQS用戶端物件 (AmazonSQSClient)。 NET框架。這是 Amazon 的一部分。 SQS命名空間。這個對象是必需的IQueueClient,而不是,這是微軟的一部分。 ServiceBus 命名空間。

应用开发人
呼叫方 SendMessageAsync 法,將訊息傳送至SQS佇列。

變更將訊息傳送至佇列的程式碼以使用 amazonSqsClient. SendMessageAsync 方法。如需詳細資訊,請參閱隨附的程式碼範例。

应用开发人
呼叫方 ReceiveMessageAsync 法以接收SQS佇列中的訊息。

變更接收訊息的程式碼以使用 amazonSqsClient. ReceiveMessageAsync 方法。如需詳細資訊,請參閱隨附的程式碼範例。

应用开发人
呼叫方 DeleteMessageAsync 法以從SQS佇列中刪除訊息。

若要刪除郵件,請從中變更程式碼queueClient。 CompleteAsync 方法的 amazonSqsClient. DeleteMessageAsync 方法。如需詳細資訊,請參閱隨附的程式碼範例。

应用开发人

其他資訊

此模式包含兩個範例應用程式 (請參閱附件一節):

  • AzureSbTestApp包含使用 Azure 服務匯流排佇列的程式碼。

  • AmazonSqsTestApp使用 Amazon SQS。這是一個使用的控制台應用程序。 NET核心 2.2,包括用於發送和接收消息的示例。

備註:

  • queueClient 是的一個對象IQueueClient,這是微軟的一部分. Azure。 ServiceBus 命名空間 (包含在微軟. Azure 中。 ServiceBus NuGet 包)。

  • amazonSqsClient 是 A 的一個對象mazonSQSClient,這是 Amazon 的一部分。 SQS命名空間 (包含在 AWSSDK. SQS NuGet 包)。

  • 視程式碼執行的位置而定,如果它在執行EC2,角色需要具有寫入SQS佇列的權限。

附件

若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip