是否有提供 Amazon SQS 高可用性的 FIFO 消息队列服务?

Posted

技术标签:

【中文标题】是否有提供 Amazon SQS 高可用性的 FIFO 消息队列服务?【英文标题】:Is there a FIFO message queuing service offering the high availability of Amazon SQS? 【发布时间】:2012-05-09 15:33:27 【问题描述】:

如果 Amazon SQS 提供某种 FIFO 访问的外观,我会喜欢使用它,但顺序似乎完全随机。

有什么东西可以为我提供 FIFO 排队作为云服务和 SQS 的高可用性?

如果这要求太多 - 在 EC2 中将上述要求放在一起的最简单方法是什么?或者换句话说,在 EC2 中工作的最简单的高可用性队列解决方案是什么?

感谢您的见解!

【问题讨论】:

【参考方案1】:

查看 RabitMQ 和 StormMQ。

【讨论】:

StormMQ 看起来很有趣,但似乎很难从他们的网站上找到有关其定价的信息。他们似乎也处于封闭的测试阶段。在 RabbitMQ 上,我在他们的网站上没有找到任何托管解决方案 - 有没有可以指点我的?【参考方案2】:

2016 年 11 月 19 日更新

Amazon SQS 刚刚获得FIFO Queues with Exactly-Once Processing & Deduplication:

今天,我们通过支持使 SQS 更加强大和灵活 用于 FIFO(先进先出)队列。 我们正在推出这个新的 现在两个地区的队列类型,并计划在 2017 年初还有许多其他人。

这些队列旨在保证消息得到处理 仅一次,按发送顺序排列,没有重复。 [...]

[强调我的]

正如所强调的,这些新的 FIFO SQS 队列将涵盖手头的用例,但尚未在所有SQS regions 中可用[最初仅在美国东部(俄亥俄)和美国西部(俄勒冈)]。此外,SQS FAQ for FIFO queues 概述了标准队列和 FIFO 队列之间的显着差异,应预先考虑,例如每秒 300 个事务的吞吐量限制。


初步回答

如果 Amazon SQS 提供了一些类似的功能,我会很乐意使用它 FIFO 访问,但顺序似乎完全随机。

虽然我还没有体验过完全随机的消息排序(这可能取决于用例,尤其是消息量),但确实没有 FIFO 保证,请参阅相应的常见问题解答 @987654324 @:

不,Amazon SQS 不保证对 Amazon 中消息的 FIFO 访问 SQS 队列,主要是因为 Amazon 的分布式特性 质量保证。如果您需要特定的消息排序,您应该设计您的 应用程序来处理它。

鉴于您表示对托管 RabbitMQ 以及 StormMQ 感兴趣,我不妨为您指出其他商业产品:

CloudAMQP

CloudAMQP 是 RabbitMQ 即服务,因此正是您所要求的,因为 RabbitMQ 支持所需的真正的 FIFO 消息排序(请参阅 Amazon SQS vs. RabbitMQ一个很好的比较)。

根据他们的计划和价格,它显然仅作为一流平台提供商的插件提供,因此您必须依次查看这些:

AppHarbor CloudAMQP Add-on Heroku CloudAMQP Add-on 云控制CloudAMQP Add-on

IronMQ

IronMQ 为开发人员提供即用型消息传递,具有高度可靠的交付和云优化性能它符合当今对Software as a service (SaaS) 产品的期望,尤其是在易于理解且特别公开的定价模型方面 正如 Sleavely 正确的critizised,Iron.io 似乎已经放弃了它以前的典范定价模型 - 请参阅 Alex Payne 的 How Not To Sell Software in 2012 以获得很好的咆哮并就此提出建议。

到目前为止,我自己只对其进行了短期测试,但对所提供的功能和语言集成非常满意(请参阅 Client Libraries 和 Beanstalkd Support) - 鉴于它们具有竞争力的价格标签,尤其是免费套餐使其成为探索消息队列作为服务解决方案的好人选,尤其是结合他们的第二个产品IronWorker(一个易于使用且可大规模扩展的任务队列 [...]),它提供了迄今为止 AWS 还没有的功能。

FIFO 消息排序

不幸的是,我无法确定 IronMQ 是否直接支持真正的 FIFO,因此我实际上对此表示怀疑 - 因此,您需要提交支持请求来验证这一点。

来自 Iron.io 的Evan Shaw 证实 IronMQ 实际上提供了 FIFO 消息排序(非常感谢)。

【讨论】:

我在 Iron.io 工作,可以确认 IronMQ 将消息排序为 FIFO。 @EvanShaw:非常感谢,非常感谢这样的主动支持 :) 非常感谢。我会去研究这些选项并回复。 @EvanShaw: 是只有 FIFO 还是 EOIO(Exactly Once In Order)? 获取 IronMQ 定价的唯一方法是通过 Archive.org(anno 2014 或 2015);不幸的是,IronMQ 似乎不符合“如何在 2017 年销售软件”的资格。【参考方案3】:

我认为 IronMQ 将是适合您的方式

【讨论】:

【参考方案4】:

ActiveMQ 是一种广泛使用的消息代理,它提供 FIFO 队列。如果您正在寻找与 AWS 一起使用的高可用性和托管版本,请查看 http://www.cinovo.de/activemq-as-a-service。

【讨论】:

以上是关于是否有提供 Amazon SQS 高可用性的 FIFO 消息队列服务?的主要内容,如果未能解决你的问题,请参考以下文章

Amazon SQS 消息队列服务

从 Amazon SQS 馈送 Apache Spark 流?

如何将Amazon SQS与Dynamodb集成

Amazon SQS 多租户和 HIPAA 合规性

Amazon Elastic Beanstalk Worker cronjob (SQS) 多次触发同一消息

可以从 http(javascript 客户端)直接向 Amazon SQS 发送请求吗?