我有一个用例,其中将有数据流到来,而我不能以相同的速度消耗它,并且需要一个缓冲区。这可以使用SNS-SQS队列来解决。我知道Kinesis解决了同样的目的,那么有什么区别呢?为什么我应该喜欢(或者不应该喜欢)Kinesis?
请记住,这个答案在2015年6月是正确的
在研究了这个问题一段时间后,考虑到同样的问题,我发现SQS(带有SNS)对于大多数用例是首选的,除非消息的顺序对您很重要(SQS不保证消息上的FIFO)。
Kinesis的优势主要有2个:
这两个优点都可以通过使用SNS作为向SQS的扇件来实现。这意味着消息的生产者只向SNS发送一条消息,然后SNS将消息扇出到多个SQS,每个用户应用程序一条。这样,你就可以拥有你想要的多的消费者,而不需要考虑分片容量。
此外,我们还增加了一个SQS,它订阅了将保存14天消息的SNS。在正常情况下,没有人从这个SQS中读取数据,但如果有bug使我们想要倒回数据,我们可以很容易地从这个SQS中读取所有消息并将它们重新发送到SNS。而Kinesis只提供7天的保留时间。
总之,SNS+SQSS更容易,并且提供了大多数功能。IMO你需要一个真正有力的案例来选择Kinesis而不是它。
从表面上看,它们有几分相似,但您的用例将决定哪种工具是合适的。IMO,如果你能用SQS过得去,那么你就应该--如果它能做你想做的事情,它会更简单、更便宜,但这里有一个更好的解释,来自AWS FAQ,它给出了两个工具的适当用例的例子,以帮助你做出决定:
常见问题
我们正在开发一个系统,我们需要向数千部手机发送推送通知。我们使用Amazon SNS进行了设置。我们将向每部手机发送单独的消息,因此我们直接发送到SNSendpointARN,而不是主题ARN。 我们目前正在想这个系统的性能。我在网上找不到任何关于可以向SNS发送多少消息的内容。例如,如果我需要向25000个SNSendpoint发送25000条消息,我可以以多快的速度发送它们?秒、分钟、小时?
我目前正在尝试亚马逊转录服务,我想知道是否应该在将音频文件发送到亚马逊转录之前对其进行预处理。我在文档中找不到任何东西,所以我假设它们没有应用任何预处理。
我刚刚开始使用AWS EC2。我明白EC2就像一台远程计算机,在那里我可以做几乎所有我想做的事情。然后我发现了ECS的事。我知道它使用Docker,但我对这两者之间的关系感到困惑。 ECS只是EC2中的Docker安装吗?如果我已经有一个EC2并且我启动了一个ECS,这是否意味着我有两个实例?
我的Android应用程序中有一个与亚马逊SNS服务相关的问题。我正在使用亚马逊SNS推送服务。请查看此链接http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html有关亚马逊SNS服务的更多详细信息,请参阅。 我像在Amazon samples http://docs . AWS . Amazon . com/SNS/latest/DG
问题内容: 从log.go(执行日志包): 只是一个函数包装器,为什么我应该用它代替or ? 有实际原因吗? 问题答案: 两件事不同: 通过包日志进行打印对于并发goroutine是安全的(而普通的则不是) 日志可以自动添加计时信息。 因此,这是两件完全不同的事情。log用于记录和格式化。(好吧,log使用相同的动词和标志,但这很方便)。
对不起.我又加了一些内容。我在Spring中测试了两个消息队列(rabbitmq、amazon sqs),如下所示。 我的目的是逻辑处理用户电子邮件到队列发送注册完成电子邮件时,用户完成注册无一例外。 但是,上面的逻辑发生RuntimeException。 有人知道这是为什么吗?