我对使用 Amazon SQS 开始一些开发非常感兴趣,也许 SimpleDB 也是如此,我的问题是,是否有任何开源解决方案可以模仿该功能,仅用于开发目的。我已经遇到过用于创建 EC 式云的 Eucalyptus 项目 ( http://open.eucalyptus.com )。
我在谷歌上没有取得任何成功,我怀疑这是因为进入成本太便宜了,但是,有人知道这样的事情吗?
我对使用 Amazon SQS 开始一些开发非常感兴趣,也许 SimpleDB 也是如此,我的问题是,是否有任何开源解决方案可以模仿该功能,仅用于开发目的。我已经遇到过用于创建 EC 式云的 Eucalyptus 项目 ( http://open.eucalyptus.com )。
我在谷歌上没有取得任何成功,我怀疑这是因为进入成本太便宜了,但是,有人知道这样的事情吗?
对于 SQS,我编写了ElasticMQ,您可以嵌入式运行(它是用 Scala 编写的,因此可以在 JVM 上运行)或独立运行。它有持久模式和内存模式,第一个对开发有用,第二个对测试有用。
一些 Amazon SDK 具有“模拟”模式,即:
模拟服务是使用示例代码的另一种方式。该服务不调用 AWS,而是返回一组响应,您可以修改该响应以满足您的需要(XML 响应文件位于 Mock 目录中)。模拟服务使您可以轻松测试应用程序如何处理不同的响应。
对于 SQS,Perl 和 PHP SDK 似乎具有模拟模式。我知道适用于 Amazon RDS 的 .NET SDK 也有模拟模式。
Java SDK 不包含模拟实现:
如果您将使用的 SDK 没有可用的模拟模式,您可能会创建自己的类似类型的东西来返回预配置的响应,而不是实际启动服务。
请参阅此处了解更多信息
如果您需要的不仅仅是 SQS 的测试替身,您可以尝试LocalStack。
为了模拟 SQS,它在内部使用了 adamw提到的 ElasticMQ。
例如,您可以通过 Docker 启动 LocalStack,它将启动以下服务:
GoAws - https://github.com/p4tin/goaws - 刚刚作为测试版发布。(免责声明 - 我是开发人员)。
如果您在 .NET 或 Mono 中,您可以尝试Stratosphere。它具有模仿 SimpleDB、SQS 和 S3 的本地实现。对于 SimpleDB 模拟实现,它使用 SQLite,对于 SQS 和 S3,它将消息/对象存储在文件系统中。
如果您需要模拟 SNS 以及 SQS,您可以查看:Yopa