问题标签 [elastic-mq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1704 浏览

node.js - 为什么 Node.js AWS-SDK 在创建本地队列时返回错误的 SQS 队列 URL

我正在使用 ElasticMQ 在我的本地开发机器上模拟 AWS SQS。我在 Docker 容器中运行 ElasticMQ,使用 docker-osx-dev 在 Linux VM 上托管 Docker 容器。这意味着我访问的是虚拟机 IP 上的本地 ElasticMQ 实例,而不是我的本地主机 IP。

当我尝试使用下面的代码在 EMQ 中创建队列时,它会返回 localhost 的队列 URL,而不是托管 docker 容器的 VM 的 IP。

目前此代码返回:http://localhost:9324/queue/test_queue,但它应该返回http://192.168.59.103:9324/queue/test_queue。如果我将 URL 中的 'localhost' 替换为实际的 IP 地址,我可以使用该 URL 成功访问队列,表明它确实已创建,但这是一个非常讨厌的 hack。我需要在上面的代码中进行哪些更改才能更正此问题?

更新:Invalid Endpoint 在使用 ElasticMQ 模拟容器出现另一个问题后,我返回到此问题。这次它是 docker-compose 文件的一部分,另一个容器通过它的 docker 主机名访问它。SQS 不接受带有下划线的主机名。这会弄乱大多数人的 docker-compose 文件,因为下划线很常见。如果您收到有关无效端点的错误消息,请尝试在撰写文件中使用连字符而不是下划线重命名您的容器(即http://sqs_local:9324会失败,http://sqs-local:9324会很好) .

0 投票
1 回答
5970 浏览

python - 为 boto3 SQS 设置端点

我们的应用程序使用亚马逊的 SQS 作为消息队列,我们​​使用 elasticMQ 进行测试/暂存;elasticMQ 是一个完全兼容 SQS 的消息队列服务器。由于我们的大部分应用程序是在 java 中,我们可以在我们的测试或暂存中运行嵌入式 elasticMQ,切换我们的队列端点以指向 elasticMQ 和瞧,一切都很好,我们不接触我们的生产队列。

话虽如此,我们的一些应用程序是用 python 编写的——它使用 boto3 来处理 SQS 请求。由于 elasticMQ 也可以作为独立应用程序运行,我想知道是否可以将端点从默认 url (sqs.region.amazonaws.com:80) 切换到 boto3 中的其他内容 (localhost:9324)。我已经搜索了文档和 SO,但无法确定我想做的事情是否可行。

0 投票
3 回答
5084 浏览

json - 如何将 JSON 文件发布为 Amazon SQS 的 MessageBody?

我在本地运行ElasticMQ以模拟 Amazon SQS,并且我想将 JSON 文件作为 MessageBody 发送。这是一个有效的示例请求:

如果我想发送一个大的 JSON 文件,将其作为 POST 会更有意义,如下所示:

有没有办法使这项工作?

0 投票
0 回答
150 浏览

java - 在 Maven 中运行集成测试时 Akka 失败

我已经为一个项目编写了一些集成测试,当我在 intellij 中运行服务然后运行集成测试时工作正常,但是当我运行 man clean verify 时,如果在我尝试创建时会导致以下错误SQSRestServer:

我在maven中运行时遇到的错误如下:

[错误] 线程“主”中的异常

[错误] java.lang.VerifyError:分支目标 152 处的堆栈图帧不一致

[错误] 异常详情:

[错误] 位置:

[错误] akka/dispatch/Mailbox.processAllSystemMessages()V @152:getstatic

[错误] 原因:

[错误] 类型 top(当前帧,locals[9])不可分配给 'akka/dispatch/sysmsg/SystemMessage'(堆栈映射,locals[9])

[错误] 当前帧:

[错误] bci:@131

[错误]标志:{} [错误]本地:{'akka/dispatch/Mailbox','java/lang/InterruptedException','akka/dispatch/sysmsg/SystemMessage',顶部,'akka/dispatch/Mailbox',' java/lang/Throwable', 'java/lang/Throwable' }

[错误] 堆栈:{ 整数 }

[错误] 堆栈图框架:

[错误] bci:@152

[错误] 标志:{ }

[错误] locals: { 'akka/dispatch/Mailbox', 'java/lang/InterruptedException', 'akka/dispatch/sysmsg/SystemMessage', top, 'akka/dispatch/Mailbox', 'java/lang/Throwable', 'java/lang/Throwable',顶部,顶部,'akka/dispatch/sysmsg/SystemMessage' }

[错误] 堆栈:{ }

[错误] 字节码:

[错误] 0x0000000: 014c 2ab2 0132 b601 35b6 0139 4db2 013e

[错误] 0x0000010: 2cb6 0142 9900 522a b600 c69a 004b 2c4e

[错误] 0x0000020: b201 3e2c b601 454d 2db9 0148 0100 2ab6

[错误] 0x0000030: 0052 2db6 014b b801 0999 000e bb00 e759

[错误] 0x0000040: 1301 4db7 010f 4cb2 013e 2cb6 0150 99ff

[错误] 0x0000050: bf2a b600 c69a ffb8 2ab2 0132 b601 35b6

[错误] 0x0000060: 0139 4da7 ffaa 2ab6 0052 b600 56b6 0154

[错误] 0x0000070: b601 5a3a 04a7 0091 3a05 1905 3a06 1906

[错误] 0x0000080: c100 e799 0015 1906 c000 e73a 0719 074c

[错误] 0x0000090: b200 f63a 08a7 0071 b201 5f19 06b6 0163

[错误] 0x00000a0: 3a0a 190a b601 6899 0006 1905 bf19 0ab6

[错误] 0x00000b0: 016c c000 df3a 0b2a b600 52b6 0170 b601

[错误] 0x00000c0: 76bb 000f 5919 0b2a b600 52b6 017a b601

[错误] 0x00000d0: 80b6 0186 2ab6 018a bb01 8c59 b701 8e13

[错误] 0x00000e0: 0190 b601 9419 09b6 0194 1301 96b6 0194

[错误] 0x00000f0: 190b b601 99b6 0194 b601 9ab7 019d b601

[错误] 0x0000100: a3b2 00f6 3a08 b201 3e2c b601 4299 0026

[错误] 0x0000110: 2c3a 09b2 013e 2cb6 0145 4d19 09b9 0148

[错误] 0x0000120: 0100 1904 2ab6 0052 b601 7a19 09b6 01a7

[错误] 0x0000130: a7ff d62b c600 09b8 0109 572b bfb1

[错误] 异常处理表:

[错误] bci [290, 307] => 处理程序:120

[错误] 堆栈图选项卡

[错误] 文件:

[错误] append_frame(@13,Object[#231],Object[#177])

[错误] append_frame(@71,Object[#177])

[错误] 斩帧(@102,1)

[错误] full_frame(@120,{Object[#2],Object[#231],Object[#177],Top,Object[#2],Object[#177]},{Object[#223]})

[错误] full_frame(@152,{Object[#2],Object[#231],Object[#177],Top,Object[#2],Object[#223],Object[#223],Top,Top ,对象[#177]},{})

[错误] append_frame(@173,Object[#357])

[错误] full_frame(@262,{Object[#2],Object[#231],Object[#177],Top,Object[#2]},{})

[错误] 相同帧(@307)

[错误] 相同帧(@317)

[错误]

[错误] 在 akka.dispatch.Mailboxes.(Mailboxes.scala:33)

[错误] 在 akka.actor.ActorSystemImpl。

(ActorSystem.scala:620)

[错误] 在 akka.actor.ActorSystem$.apply(ActorSystem.scala:142)

[错误] 在 akka.actor.ActorSystem$.apply(ActorSystem.scala:109)

[错误] 在 org.elasticmq.rest.sqs.TheSQSRestServerBuilder$$anonfun$getOrCreateActorSystem$2.apply(SQSRestServerBuilder.scala:178)

[错误] 在 org.elasticmq.rest.sqs.TheSQSRestServerBuilder$$anonfun$getOrCreateActorSystem$2.apply(SQSRestServerBuilder.scala:177)

[错误] 在 scala.Option.getOrElse(Option.scala:121)

[错误] 在 org.elasticmq.rest.sqs.TheSQSRestServerBuilder.getOrCreateActorSystem(SQSRestServerBuilder.scala:177)

[错误] 在 org.elasticmq.rest.sqs.TheSQSRestServerBuilder.start(SQSRestServerBuilder.scala:88)

[错误] [已编辑,特定于公司]

有什么想法有什么问题吗?

0 投票
1 回答
437 浏览

unit-testing - 为什么 ElastiMq 一直需要服务器并检查参数,因为我正在传递它

我是第一次使用 AWS SQS。我在某家公司工作,由于某些我无法控制的原因,该公司通过防火墙阻止我们从本地网络连接到 SQS。我可以将我开发的任何东西上传到 AWS 中的 TomCat,甚至可以通过我们的 ec2 用户通过 Linux 命令行运行(通过 WinSCP 上传并通过 Putty 触发)。

由于我需要使用 sqs 提供某些解决方案,但我无法从我的 Eclipse 调试访问它,所以我有兴趣模拟 sqs。此外,我从测试的角度看到了这种方法的优势。也就是说,经过几个小时的搜索,我找到了我需要的东西:http ://www.schibsted.pl/blog/mocking-amazon-sqs-with-elasticmq/

我下载了示例(https://github.com/JanGurda/elastc-mq-rule-sample),但无法启动。我知道嵌入了一个 elasticmq,它应该与这样的 jar 一起启动。我通过下载 elasticmq 并在运行示例之前启动它尝试了其他方式,但我仍然得到相同的输出。

基本上,我得到了这个输出

似乎我在做一些非常愚蠢的事情,但我没有找到北方。PS。我检查了一下,pom 有 lombok 和 elasticmq 正确设置。

绒球

DropwizardAppRule:

测试.yml

主要的:

0 投票
1 回答
1386 浏览

node.js - 如何通过 AWS SDK 在 node.js 上调用 elasticmq?

我正在开发一个 node.js 项目计划以在 AWS 上运行并使用 Amazon SQS。我正在使用 elasticMQ 设置本地开发环境。( https://github.com/adamw/elasticmq ) 二进制文件也可以通过 npm 获得,这很酷。

是否可以使用适用于 Javascript 的 AWS 开发工具包来调用本地类似 sqs 的进程?还是我必须通过 REST 接口?有人可以分享一个代码示例来初始化对 elasticmq 的调用吗?

非常感谢!

0 投票
0 回答
85 浏览

amazon-sqs - ElasticMQ 不会像预期的那样拒绝非法字符串

我一直在使用 ElasticMQ,它应该表现得像 AWS SQS。

  • 根据 AWS SQS 在线文档,任何超出此范围的非法字符串 #x9 | #xA | #xD | #x20 到 #xD7FF | #xE000 到 #xFFFD | #x10000 到 #x10FFFF,将被拒绝。

但是当我创建一个非法字符串(仅包含一个非法字符)并将其发送到 ElasticMQ 时,它并没有被拒绝。

  • 不过 ElasticMQ 的行为确实很奇怪:对于这个非法字符串(一个字符),在客户端计算的 MD5 校验和与 ElasticMQ 返回的 MD5 校验和非常不同。

谁能验证 ElasticMQ 是否能够拒绝非法字符串?

0 投票
2 回答
684 浏览

maven - 使用fabric8 maven插件运行带有外部配置文件的docker镜像

我正在尝试使用 maven 在 docker 上运行 elasticmq。你可以在下面找到我的 docker 配置。而且在/src/main/resources/container/sqs/config文件夹下我有自定义队列配置名称elasticmq.conf

当我运行时,我收到此错误:

有谁可以解决这个问题或如何正确配置?

0 投票
0 回答
151 浏览

python-3.x - 为什么我在尝试使用 Boto 连接到大使背后的 ElasticMQ 服务时收到 SQSError: 404?

我有一个 elasticmq docker 容器,它使用 Kubernetes 部署为服务。此外,该服务通过大使的方式向外部用户公开。

这是该服务的 yaml 文件。

现在我可以通过 curl 来检查 elasticmq 容器是否正常,并且 Ambassador 工作正常:

另一方面,当我尝试使用 Boto3 做同样的事情时,我得到一个SQSError: 404 not found.

这是我的 Python 脚本:

我认为它与 elasticmq.conf 中指定的外部主机有关,所以我将其更改为:

我认为更改 elasticmq conf 会起作用,但事实并非如此。我怎样才能让它工作?

0 投票
1 回答
122 浏览

java - 在测试之间重新设置 H2 数据库(即将 DB 重置为我的 SQL 文件)

我正在尝试使用 H2 进行集成测试。我希望 H2 数据库在每次测试之间重置为我的data.sql 。但是在建议的解决方案中,我没有找到工作;@Transactional并且@DirtiesContext似乎没有工作。

在 a@beforeAll中,我正在设置一个模拟队列(使用ElasticMQ库并想知道这是否也可能导致问题?)。

当我自己运行测试时,测试工作正常。

任何想法将不胜感激!