将消息队列从微软 Azure 服务总线迁移到亚马逊 SQS - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将消息队列从微软 Azure 服务总线迁移到亚马逊 SQS

由 Nisha Gambhir 创作 () AWS

R 类型:更换平台

源:使用 Azure 服务总线队列的应用程序

目标:亚马逊 SQS

创建者:AWS

环境:PoC 或试点

技术:Web 和移动应用程序;迁移

工作负载:Microsoft

AWS服务:亚马逊 SQS

Summary

此模式描述了如何迁移。 NET框架或. NET从使用 Microsoft Azure 服务总线队列消息平台到亚马逊简单队列服务 (AmazonSQS) 的核心 Web 或控制台应用程序。

应用程序使用消息传递服务向其他应用程序发送数据以及从其他应用程序接收数据。这些服务有助于在云中构建解耦、高度可扩展的微服务、分布式系统和无服务器应用程序。

Azure 服务总线队列是更广泛的 Azure 消息传送基础结构的一部分,该基础结构支持排队和发布/订阅消息收发。 

Amazon SQS 是一项完全托管的消息队列服务,可让您分离和扩展微服务、分布式系统和无服务器应用程序。Amazon SQS 消除了与管理和操作面向消息的中间件相关的复杂性和开销,使开发人员能够专注于差异化工作。使用 AmazonSQS,您可以在任意数量的软件组件之间发送、存储和接收消息,而不会丢失消息或要求其他服务可用。

先决条件和限制

先决条件

  • 一个活跃的AWS账户 

  • A。 NET框架或. NET使用 Azure 服务总线队列的核心 Web 或控制台应用程序(附有示例代码)

产品版本

  • 。 NET框架 3.5 或更高版本,或。 NET酷睿 1.0.1、2.0.0 或更高版本

架构

源技术堆栈

  • A。 NET(核心或框架)使用 Azure 服务总线队列发送消息的 Web 或控制台应用程序

目标技术堆栈

  • 亚马逊 SQS

工具

工具

  • Microsoft Visual Studio

代码

要为 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角色或创建新角色。

操作说明

任务描述所需技能
为亚马逊创建IAM政策SQS。

创建提供亚马逊访问权限的IAM政策SQS。有关示例策略,请参阅“代码”部分。

系统工程师
创建个人AWS资料。

通过运行 Set- PowerShell 命令的AWS工具来创建新的配置文件AWSCredential。此命令将您的访问密钥和秘密密钥存储在您指定的配置文件名称下的默认凭证文件中。将您之前创建的 Amazon SQS 政策与该账户相关联。保留AWS访问密钥 ID 和私有访问密钥。在接下来的步骤中将需要这些内容。

系统工程师
创建 SQS 队列。

您可以创建标准队列或先进先出 (FIFO) 队列。有关说明,请参阅“参考”部分中的链接。

系统工程师
任务描述所需技能
安装适用于 Visual Studio 的 AWS Toolkit。

该工具包是 Microsoft Visual Studio 的扩展,可让你更轻松地构建和部署。 NET中的应用程序AWS。有关安装和使用说明,请参阅“参考”部分中的链接。

应用程序开发者
安装 AWSSDK。 SQS NuGet 包裹。

你可以安装 AWSSDK。 SQS在 Visual Studio 中选择 “管理 NuGet 软件包” 或运行 “安装 AWSSDK包” 命令。 SQS”。

应用程序开发者
在你的中创建一个 AWSCredentials 对象。 NET应用程序。

附件中的示例应用程序显示了如何创建 B asicAWSCredentials 对象,该对象继承自 AWSCredentials。您可以使用之前的访问密钥 ID 和秘密访问密钥,也可以让对象在运行时从 .aws 文件夹中选取它们作为用户配置文件的一部分。

应用程序开发者
创建SQS客户端对象。

为创建SQS客户端对象 (AmazonSQSClient)。 NET框架。这是亚马逊的一部分。 SQS命名空间。这个对象是必需的IQueueClient,而是 Microsoft.Azure 的一部分。 ServiceBus 命名空间。

应用程序开发者
调用 SendMessageAsync 方法向SQS队列发送消息。

将向队列发送消息的代码更改为使用 amazonSqsClient。 SendMessageAsync 方法。有关详细信息,请参阅随附的代码示例。

应用程序开发者
调用 ReceiveMessageAsync 方法以接收来自SQS队列的消息。

将接收消息的代码更改为使用 amazonSqsClient。 ReceiveMessageAsync 方法。有关详细信息,请参阅随附的代码示例。

应用程序开发者
调用 DeleteMessageAsync 方法从SQS队列中删除消息。

要删除消息,请更改中的代码queueClient。 CompleteAsync 方法 amazonSqsClient. DeleteMessageAsync 方法。有关详细信息,请参阅随附的代码示例。

应用程序开发人员

其他信息

此模式包括两个示例应用程序(请参阅附件部分):

  • AzureSbTestApp包括使用 Azure 服务总线队列的代码。

  • AmazonSqsTestApp使用亚马逊SQS。这是一个使用的控制台应用程序。 NETCore 2.2,包括发送和接收消息的示例。

注意:

  • queueClient 是的对象IQueueClient,它是 Microsoft.Azure 的一部分。 ServiceBus 命名空间(包含在 Microsoft.Azure 中。 ServiceBus NuGet 包裹)。

  • amazonSqsClient 是 A 的对象mazonSQSClient,是 Amazon 的一部分。 SQS命名空间(包含在 AWSSDK. SQS NuGet 包裹)。

  • 根据代码的运行位置,比如它是否在运行EC2,角色需要拥有写入SQS队列的权限。

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip