AWS SQS和其他服务

时间:2018-02-17 16:31:32

标签: amazon-web-services queue amazon-sqs

我的公司有一个消息系统,它以JSON格式发送实时消息,而且它不是在AWS上构建的 我们的团队正在尝试使用AWS SQS接收这些消息,然后让DynamoDB存储此消息 我想用EC2来阅读这些消息,然后保存它们 更好的解决方案?或者怎么做我没有很好的经验

2 个答案:

答案 0 :(得分:0)

首先,所有EC2都是基于云的基础架构,它类似于本地设置中具有操作系统的物理机。如果要创建任何将从Amazon SQS(Json格式的消息)中获取数据并将其推送到dynamodb(无Sql数据库)的应用程序,您的设计是正确的,因为SQS和DynamoDb都具有彻底的Json支持。一旦您的应用程序准备就绪,那么您将在EC2计算机上部署该应用程序。

为实现这一目标,您的应用程序必须具有消耗消息的asyc Buffered SQS使用者(sqs消息的限制为256KB),因此无论哪个应用程序发布消息,消息的大小都必须小于256Kb。 请参阅以下链接了解sqs消费者

is putting sqs-consumer to detect receiveMessage event in sqs scalable

从sqs队列中消耗了消息后,您需要将其保存在dynamodb中,您可以使用 crud repository 轻松完成。使用Repository,您可以直接将json保存在Dynamodb表中,但请务必根据请求配置配置写入容量,因为配置容量越多,成本就越高。请参考以下链接来配置表的写入容量。

Dynamodb reading and writing units

答案 1 :(得分:0)

一般情况下,您会设置如下设置:

enter image description here

EC2实例(一个或多个)将每隔几秒读取一次队列以查看是否有任何内容。如果是这样,他们会将此数据写入DynamoDB。

根据您所说的,您在一个月内从SQS读取的内容少于1,000,000,因此您可以从此开始免费套餐。您最初可以拥有一个EC2实例,这可能是一个非常小的实例 - 一个T2.micro应该绰绰有余。而且您在DynamoDB上每秒不需要多次写入。

SQS的优势在于,如果由于某种原因您的EC2实例暂时不可用,则消息将继续排队,您将不会丢失任何消息。

从编码角度来看,您没有提及您的开发环境,但有各种各样的环境都可以使用AWS库。我用Java开发,执行此操作的代码可能可能 100行。我猜其他语言也差不多。确保您使用您正在使用的语言查看长轮询 - 它可以帮助您加快处理速度并节省资金。