本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將簡訊佇列從微軟 Azure 服務匯流排遷移到 Amazon SQS
創建者尼莎甘比希爾 (AWS)
R 類型:重新平台 | 來源:使用 Azure 服務總線隊列的應用程序 | 目標:Amazon SQS |
創建者:AWS | 環境:PoC 或試點 | 技術:網站和 Web 應用程序;遷移 |
工作量:微軟 | AWS 服務:Amazon SQS |
總結
此模式描述如何將 .NET 框架或 .NET 核心 Web 或主控台應用程式從使用微軟 Azure 服務匯流排佇列簡訊平台遷移到 Amazon Simple Queue Service (Amazon SQS)。
應用程式會使用訊息傳送服務,將資料傳送至其他應用程式,以及從中接收資料 這些服務有助於在雲端中建置分離、可高度擴充的微服務、分散式系統和無伺服器應用程式。
Azure 服務匯流排佇列是支援佇列和發佈/訂閱訊息的更廣泛 Azure 通訊基礎結構的一部分。
Amazon SQS 是一種全受管的訊息佇列服務,可解偶和擴展微服務、分散式系統和無伺服器應用程式。Amazon SQS 消除了與管理和操作訊息導向中介軟體相關的複雜性和開銷,並讓開發人員能夠專注於差異化工作。使用 Amazon SQS,您可以在任何磁碟區的軟體元件之間傳送、存放和接收訊息,而不會遺失訊息或需要其他服務可用。
先決條件和限制
先決條件
有效的 AWS 帳戶
使用 Azure 服務匯流排佇列的 .NET 架構或 .NET 核心 Web 或主控台應用程式 (附加的範例程式碼)
產品版本
.NET 框架 3.5 或更新版本
架構
源, 技術, 堆棧
使用 Azure 服務匯流排佇列傳送訊息的 .NET (核心或架構) Web 或主控台應用程式
目標技術堆疊
Amazon SQS
工具
工具
Microsoft Visual Studio
Code
若要為 Amazon SQS 建立 AWS Identity Management (IAM) 政策
1. 登入 AWS 管理主控台,然後前往 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 SQS 建立 IAM 政策 | 建立可提供 Amazon SQS 存取權的 IAM 政策。請參閱程式碼,以取得範例政策 | 系統工程 |
建立 AWS 設定檔。 | 執行適用於 PowerShell 命令集的 AWS 工具來建立新的設定檔AWSCredential。此命令會將您的存取金鑰和秘密金鑰存放在您指定之描述檔名稱下的預設憑證檔案中。將您先前建立的 Amazon SQS 政策與此帳戶連結。保留 AWS 存取金鑰 ID 和秘密存取金鑰 ID 在接下來的步驟中將需要這些步驟。 | 系統工程 |
建立 SQS 佇列 | 您可以建立標準佇列或先進先出 (FIFO) 佇列。如需指示,請參閱「參照」一節中的連結。 | 系統工程 |
任務 | 描述 | 必要 |
---|---|---|
安裝 AWS Toolkit for Visual Studio | 此 Toolkit 是 Microsoft Visual Studio 的延伸,可讓您更輕鬆地在 AWS 中建立和部署 .NET 應用程式。如需安裝和使用說明,請參閱「參考資料」一節中的連結。 | 应用开发人 |
安裝 AWSSDK .SQS NuGet 套件。 | 您可以通過在 Visual Studio 中選擇「管理 AWSSDK P NuGet ackage」或通過運行命令「安裝包 AWSSDK .SQS」來安裝 .SQS。 | 应用开发人 |
在 .NET 應用程式中建立 AWSCredentials 物件。 | 附件中的範例應用程式顯示如何建立繼承自的 BasicAWSCredentials 物件 AWSCredentials。您可以使用先前的存取金鑰 ID 和秘密存取金鑰,或讓物件在執行階段從 .aws 資料夾中挑選這些金鑰做為使用者設定檔的一部分。 | 应用开发人 |
建立 SQS 用戶端物件。 | 為 .NET 框架創建一個 SQS 客戶端對象(亞馬遜 SQLENT)。這是亞馬遜 .SQS 命名空間的一部分。此物件是必要的,而非我QueueClient,這是微軟 .Azure 的一部分。 ServiceBus 命名空間。 | 应用开发人 |
呼叫該 SendMessageAsync 方法,將訊息傳送至 SQS 佇列 | 變更將訊息傳送至佇列的程式碼以使用 amazonSqsClient. SendMessageAsync 方法。如需詳細資訊,請參閱隨附的程式碼 | 应用开发人 |
呼叫該 ReceiveMessageAsync 方法,以接收來自 SQS 佇列 | 變更接收訊息的程式碼以使用 amazonSqsClient. ReceiveMessageAsync 方法。如需詳細資訊,請參閱隨附的程式碼 | 应用开发人 |
呼叫方 DeleteMessageAsync 法,從 SQS 佇列刪除訊息。 | 若要刪除訊息,請變更佇列中的程式碼。 CompleteAsync 方法的 amazonSqsClient. DeleteMessageAsync 方法。如需詳細資訊,請參閱隨附的程式碼 | 应用开发人 |
相關資源
其他資訊
此模式包含兩個範例應用程式 (請參閱附件一節):
AzureSbTestApp包含使用 Azure 服務匯流排佇列的程式碼。
AmazonSqsTestApp使用 Amazon SQS。這是一個使用 .NET Core 2.2 的控制台應用程序,包括用於發送和接收消息的示例。
備註:
佇列物件是 I 的物件QueueClient,該物件則是微軟的物件。 ServiceBus 命名空間 (包含在微軟. Azure 中。 ServiceBus NuGet 包)。
amazonSqsClient 是 AmazonSQSClient 的一個對象,它是亞馬遜 .SQS 命名空間的一部分(包含在 AWSSDK .SQS NuGet 包中)。
根據代碼運行的位置,例如它在 EC2 上運行,角色需要具有寫入 SQS 隊列的權限。
附件
若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip