问题标签 [amazon-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 回答
1569 浏览

.net - 使用 Apache.NMS.AMQP 从 .NET 连接到 AmazonMQ (ActiveMQ) 代理

我无法使用 Apache.NMS.AMQP 客户端 ( GitHub repo ) 连接到我的 AmazonMQ 代理。

我已经启动并运行了 AmazonMQ 代理,并且可以连接到代理控制台。在我的 .NET 项目中,我安装了 Apache.NMQ.AMQP NuGet (v1.8.0),它应该用于通过 AMQP 连接到 ActiveMQ 代理。

根据 Amazon MQ 的 AWS 控制台,这是代理 AMQP 端点,请注意amqp+ssl架构:

此代码段用于连接代理:

当使用上面指定的代码片段和代理 URL 时,调用connection.Start()方法时出现以下异常:Apache.NMS.NMSException: Failed to create Provider instance for amqp+ssl

经过一些研究,我意识到应该为amqp+ssl传输连接器配置代理,我根据AMQP的ActiveMQ 文档尝试过。所以我尝试将以下 XML 添加到代理配置:

尝试保存编辑后的配置时,AWS 向我显示以下消息:

我想,这意味着只允许在配置中指定“openwire”传输连接器。

我尝试的下一个解决方案是将代理 URL 更改为使用amqp模式,所以我得到了以下信息:

代替

connection.Start()在使用以下消息调用时,这也给了我一个异常:

有什么方法可以使用 AMQP 协议和 .NET 连接到 Amazon 托管的 ActiveMQ 代理,如果我在这里缺少什么?

0 投票
1 回答
229 浏览

amqp - Apache.NMS.AMQP setting prefetch size

I am using Apache.NMS.AMQP (v1.8.0) to connect to AWS managed ActiveMQ (v5.15.9) broker but am having problems with setting prefetch size for connection/consumer/destination (couldn't set custom value on either of them).

While digging through source code I've found that default prefetch value (DEFAULT_CREDITS) is set to 200.

To test this behavior I've written test that enqueues 220 messages on a single queue, creates two consumers and then consumes messages. The result was, as expected, that first consumer dequeued 200 messages and second dequeued 20 messages.

After that I was looking for a way to set prefetch size on my consumer without any success since LinkCredit property of ConsumerInfo class is readonly.

Since my usecase requires me to set one prefetch size for connection that is what I've tried next according to this documentation page, but no success. This are URLs that I've tried:

After trying everything stated above I've tried setting prefetch for my queue destinations by appending
?consumer.prefetchSize=50 to queue name. Resulting in something like this:

queue://TestQueue?consumer.prefetchSize=50

All of above attempts resulted with effective prefetch size of 200 (determined through test described above).

Is there any way to set custom prefetch size per connection when connecting to broker using AMQP? Is there any other way to configure broker than through query parameters stated on this documentation page?

0 投票
2 回答
589 浏览

python - 无法连接到在线activemq

我遇到了问题,我无法连接到 amazon mq 上的在线 activemq 代理。这是我的代码 +++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++你能请帮帮我。我收到一个错误,因为 ++++++++++++++++++++++++++++++++++++++ 无法连接到主机无,端口无 Traceback(最近一次调用最后):文件“C:\Users\navee\PycharmProjects\apachekafka\venv\lib\site-packages\stomp\transport.py”,第 730 行,在尝试连接 self.socket = socket.create_connection( host_and_port, self.__timeout) 文件“C:\Users\navee\AppData\Local\Programs\Python\Python38-32\lib\socket.py”,第 787 行,在 getaddrinfo(host, port, 0, SOCK_STREAM):文件“C:\Users\navee\AppData\Local\Programs\Python\Python38-32\lib\socket.py”,第 914 行,在 getaddrinfo 中用于 _socket.getaddrinfo(主机、端口、系列、类型,原型,标志):socket.gaierror:

+++++++++++++++++++++++++++++++++++++++++++++++++++

0 投票
1 回答
2574 浏览

java - RabbitMQ 真的可以与 Amazon MQ (ActiveMQ) 一起使用吗?

我有一个 Java RabbitMQ 生产者应用程序,我想在 ActiveMQ 上从 Amazon MQ 发送一些消息(我已经创建了代理)。我按照此页面的步骤操作。

我为 RabbitMQ 制作了 Java 示例,起初看起来不错,但是当我创建到我的端点的连接时(用户名和密码也是):amqps://x-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-x.xx.xx-xxxx-x.amazonaws.com:5671

在这一行:

我有这些错误:

内部库中的错误:

我遇到的错误:

我知道主要错误是版本不匹配,但是有没有办法通过更改版本协议来修复它,或者这是不可能的?

因为 RabbitMQ 在示例中使用了 AMQP 0-9。

0 投票
0 回答
277 浏览

activemq - ActiveMQ 持有一条保留消息和主题多长时间

我正在为我的一些用例评估 Amazon MQ(ActiveMQ 的托管服务)。我发现的问题是一段时间后(假设 5 小时后),所有主题和消息都会丢失。消息的 QoS 为 1,并且保留标志设置为真。如何解决这个问题?我们是否需要更改服务配置文件的任何部分(我目前正在使用 AWS 为 Amazon MQ 提供的默认配置文件)。或者这是默认行为?它可以被覆盖吗?

0 投票
2 回答
12918 浏览

amazon-web-services - Amazon MQ 和 SQS 有什么区别?

我是 AWS 的新手。据我了解,AWS MQ 和 AWS SQS 都是消息队列工具。唯一值得注意的区别是 SQS 是完全托管的。

我们什么时候应该使用 SQS 或 MQ?

0 投票
1 回答
400 浏览

java - 使用 Java 将 blob 文件上传到 AmazonMQ 队列 (ActiveMQ)

我必须使用 Amazon MQ。Amazon MQ 基于 ActiveMQ。我找到了一些代码,它应该在队列中放置一条 blob 消息(PDF 大小 230kB)。但是如果我运行程序,它会在下面的错误堆栈中出错。

这是我的代码:

似乎它想要将某些内容上传到 8080,但我没有在本地配置任何内容。它只应该将 PDF 上传到队列中。

有没有人想办法解决这个问题?只需将 blob 上传到队列就不会那么复杂。

这是我得到的堆栈跟踪:

发送正常的 JMSTextMessage没有问题。

0 投票
2 回答
1732 浏览

jms - Amazon MQ (ActiveMQ) 处理大型消息时性能不佳

我们正在从 IBM MQ 迁移到 Amazon MQ,至少我们愿意这样做。问题是,与 IBM MQ 相比,使用 JMS 生产者将大消息放入队列时,Amazon MQ 的性能较差。

对于 IBM MQ,所有消息都是持久的,系统是高可用的,而 Amazon MQ 是多可用区。

如果我们将这种大小的 XML 文件放入 IBM MQ(2 cpu 和 8GB RAM HA 实例),我们将获得以下性能:

如果我们将相同的文件放在 Amazon MQ(mq.m5.2xlarge = 8 CPU 和 32 GB RAM)或 ActiveMQ 上,我们将获得以下性能:

我们还看到,IBM MQ 向队列发送消息和从队列获取消息的响应时间相同,而 Amazon MQ 在获取消息方面非常快(例如只需要 1 毫秒),但在发送时非常慢.

在 Amazon MQ 上,我们使用 OpenWire 协议。我们以 Terraform 样式使用此配置:

我们通过 POM (Maven) 将 Java 8 与 JMS ActiveMQ 库一起使用:

在 JMS 中,我们有以下 Java 代码:

我们还作为单实例 AmazonMQ 运行了性能测试。但同样的结果。我们还使用 mq.m5.4xlarge(16 cpu,96 GB RAM)引擎运行了性能测试,但仍然没有改善糟糕的性能。

性能测试配置:我们首先将上述消息(XML文件)一个一个地推送到队列中。我们这样做了 5 次。5 次后,我们从队列中读取这些消息(XML 文件)。我们称之为 1 个周期。

我们一个接一个地运行 10 个周期,因此我们总共将 300 个文件推送到队列中,并且从队列中获取了 300 个文件。

我们并行运行 3 项测试:一项来自 AWS 地区伦敦,一项来自 AWS 地区法兰克福,位于不同的 VPC 中,1 项来自法兰克福,位于与 Amazon MQ 代理相同的 VPC 中且位于同一子网中。所有客户端都在 EC2 实例上运行:m4.xlarge。

如果我们仅使用一个 VPC 运行测试,例如仅与 AmazonMQ 代理位于同一子网中的本地 VPC,则性能会提高,我们会得到以下结果:

客户端和服务器在同一个子网中,所以我们与防火墙等无关。

也许有人可以告诉我哪里出了问题,为什么我们的 Amazon MQ 或 ActiveMQ 性能如此糟糕?

额外信息:响应时间在 JMS Java 应用程序中测量,Java 开始时间在 producer.send('XML') 之前,结束时间在 producer.send('XML') 之后。差异是记录的时间。时间是超过 300 次呼叫的平均时间。
IBM MQ 服务器位于我们的数据中心,客户端应用程序在同一数据中心的服务器上运行。

额外信息测试:jms 应用程序开始创建 connectionFactory 队列会话。然后它将文件逐个上传到 MQ 1。这是一个循环,然后它在 for lus 中运行此循环 10 次,而不打开或关闭会话队列或连接工厂。然后从队列中读取所有 60 条消息并写入本地驱动器上的文件。然后它关闭连接工厂和会话以及生产者/消费者。这是一批。然后我们运行 5 个批次。因此在批次之间重新创建连接工厂、队列、会话。

作为对 Sam 的回应:当我也像 Sam 一样使用相同大小的文件执行测试时,我接近相同的响应时间,我将持久性模式也设置为 () 之间的 false 值:

我删除了连接池并设置了 concurrentStoreAndDispatchQueues="false" 我使用的系统是代理:mq.m5.2xlarge 和客户端:m4.xlarge。

但如果我用更大的文件进行测试,这是响应时间:

我有一个非常简单的要求。我有一个系统,它将消息放在队列中,并且消息是由另一个系统从队列中获取的,有时同时有时不是,有时系统上有 20 或 30 条消息在它们被卸载之前。这就是为什么我需要一个队列并且消息必须是持久的并且它必须是 Java JMS 实现。

我认为 Amazon MQ 可能是小文件的解决方案,但对于大文件却不是。我认为我们必须在这种情况下使用 IBM MQ,它具有更好的性能。但有一件重要的事情:我只在我们的 LAN 中测试了 IBM MQ。我们尝试在 Amazon 上测试 IBM MQ,但尚未成功。

0 投票
2 回答
1143 浏览

amazon-web-services - 无法使用 spring-boot 2 和 Stomp 连接到 Amazon MQ

我正在使用 Spring boot 2、Stomp 和 Amazon MQ 构建 WebSocket 应用程序。

但是我无法连接到 Amazon MQ 代理。我得到Failed to connect: connection timed out错误。

我的 WebSocket 配置:

日志

0 投票
1 回答
428 浏览

java - 无法将 Spring MVC 应用程序连接到 AmazonMQ 代理

我有一个 Spring MVC 应用程序,我想在其中集成 ActiveMQ,我已成功将其连接到本地 ActiveMQ 代理,但是当我将 AmazonMQ 的凭据放入其中时,它会出现以下错误

这是 pom.xml

以下是连接和发送消息的代码

奇怪的是,当我创建了一个示例 Spring Boot 项目来测试场景时,它工作得非常好,并且连接到远程代理没有任何错误。该示例项目也适用于 ActiveMQ 本地实例。我已经交叉检查以确保实际项目具有所有依赖项,还尝试在我的实际项目中更改 spring boot 版本并将其与示例项目 spring boot 版本匹配但没有运气。下面我还附上了示例项目代码

pom.xml

用于创建连接和发送消息的主类

请记住,示例项目适用于本地和远程消息代理,而我的实际项目适用于本地代理但不适用于远程 AmazonMQ 代理