70

我对使用 Amazon SQS 开始一些开发非常感兴趣,也许 SimpleDB 也是如此,我的问题是,是否有任何开源解决方案可以模仿该功能,仅用于开发目的。我已经遇到过用于创建 EC 式云的 Eucalyptus 项目 ( http://open.eucalyptus.com )。

我在谷歌上没有取得任何成功,我怀疑这是因为进入成本太便宜了,但是,有人知道这样的事情吗?

4

7 回答 7

118

对于 SQS,我编写了ElasticMQ,您可以嵌入式运行(它是用 Scala 编写的,因此可以在 JVM 上运行)或独立运行。它有持久模式和内存模式,第一个对开发有用,第二个对测试有用。

于 2012-08-19T15:44:21.830 回答
38

一些 Amazon SDK 具有“模拟”模式,即:

模拟服务是使用示例代码的另一种方式。该服务不调用 AWS,而是返回一组响应,您可以修改该响应以满足您的需要(XML 响应文件位于 Mock 目录中)。模拟服务使您可以轻松测试应用程序如何处理不同的响应。

对于 SQS,Perl 和 PHP SDK 似乎具有模拟模式。我知道适用于 Amazon RDS 的 .NET SDK 也有模拟模式。

Java SDK 不包含模拟实现:

客户端模拟实现已被删除。相反,鼓励开发人员使用更灵活、功能更全面的模拟库,例如EasyMockjMock

如果您将使用的 SDK 没有可用的模拟模式,您可能会创建自己的类似类型的东西来返回预配置的响应,而不是实际启动服务。

请参阅此处了解更多信息

于 2010-03-02T04:24:13.923 回答
24

如果您需要的不仅仅是 SQS 的测试替身,您可以尝试LocalStack

为了模拟 SQS,它在内部使用了 adamw提到的 ElasticMQ。

例如,您可以通过 Docker 启动 LocalStack,它将启动以下服务:

于 2018-06-07T12:45:17.137 回答
15

GoAws - https://github.com/p4tin/goaws - 刚刚作为测试版发布。(免责声明 - 我是开发人员)。

于 2016-06-02T04:02:50.217 回答
11

关于 Java SDK,它不再包含模拟实现:

客户端模拟实现已被删除。相反,鼓励开发人员使用更灵活、功能更全面的模拟库,例如EasyMockjMock

于 2012-11-14T09:42:50.277 回答
3

如果您在 .NET 或 Mono 中,您可以尝试Stratosphere。它具有模仿 SimpleDB、SQS 和 S3 的本地实现。对于 SimpleDB 模拟实现,它使用 SQLite,对于 SQS 和 S3,它将消息/对象存储在文件系统中。

于 2010-05-20T05:16:19.543 回答
1

如果您需要模拟 SNS 以及 SQS,您可以查看:Yopa

于 2016-05-15T03:23:34.907 回答