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

amazon-web-services - 更改已在运行的 Amazon MQ 代理的子网

我使用 ActiveMQ 创建了一个 Amazon MQ 代理,但我刚刚出错并选择了错误的子网。问题是通过 AWS 控制台我似乎无法编辑子网参数。它只允许我编辑安全组,但不能编辑子网参数。

代理只是一个实例。

有没有办法在已经运行的代理上编辑子网参数?

0 投票
0 回答
271 浏览

amazon-web-services - RabbitMQ 交付确认超时解决方法:pika 或编辑 Amazon-MQ 托管集群的 RabbitMQ 配置文件

背景:最近对 RabbitMQ 3.8.x 的更改创建了30 分钟的交付确认超时。根据文档,这可以通过设置 consumer_timeout 值在 rabbitmq.conf 文件中覆盖。

我的问题:我正在使用 pika 客户端库,需要 30 多分钟来处理我的工作队列中的每条消息。我正在通过 AWS Amazon-MQ 使用托管 RabbitMQ 集群,直到几天前才出现问题,但现在PRECONDITION_FAILED - delivery acknowledgment on channel 1 timed out. Timeout value used: 1800000 ms在我的日志中收到消息。我的集群是为自动次要版本更新而设置的,所以这是我对这些更改如何发生的假设。

我知道托管服务的目的是向用户隐藏所有这些设置细节,但当然,现在我需要更改其中一个。我发现我可以通过 rabbitmqadmin CLI 与远程集群进行通信以执行列出队列之类的任务,但我仍在寻找一种远程编辑底层配置文件的方法。我的集群的唯一信息是主机(形式为b-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mq.us-east-1.amazonaws.com)、用户名和密码。有谁知道这是否可能?我是各种 CLI 工具(例如 rabbitmqctl 和 rabbitmq-diagnostics)的新手,因此我们将不胜感激。

有没有办法通过库或类似的解决方法为 pika 用户设置 consumer_timeout 值?我希望 Channel.basic_consume() 函数可能有一个参数,但我也明白这可能是一个集群设置,而不是可以通过消费者设置的东西。

第一次在这里提问,所以我非常感谢任何关于我是否提供了足够信息的帮助和反馈。

0 投票
1 回答
302 浏览

java - RabbitMQ 传递确认超时

我正在通过 AWS Amazon-MQ 使用托管 RabbitMQ 集群。如果消费者快速完成他们的工作,那么一切正常。但是,根据少数情况,很少有消费者需要超过 30 分钟才能完成处理。在这种情况下,RabbitMQ 会删除消费者并使相同的消息在队列中再次可见。因此,另一个消费者拿起它并开始处理。它正在循环中发生。因此,同样的交易再次被执行,我也失去了消费者。我没有使用任何AcknowledgeMode,所以我相信它默认是 AUTO 并且有 30 分钟的限制。有什么方法可以增加 AUTO 模式的 Delivery Acknowledgement Timeout 吗?或者请让我知道是否有人对此有任何其他解决方案。

0 投票
1 回答
97 浏览

c# - AWS RabbitMQ 没有一个端点是可访问的 C#

我正在学习使用 RabbitMQ,我正在 Visual Studio for Mac 上创建一个 C# 控制台项目。

我在 Amazon AWS 上创建了一个 RabbitMQ 服务器,但是每次我尝试连接时都会收到错误“没有一个端点可以访问”;这是我的代码:

关于我为什么无法访问 AWS 的任何想法?

0 投票
1 回答
164 浏览

node.js - 延迟 ActiveMQ AMQP 1.0 的消息传递,_without_ JMS

为了澄清标题:我使用的是 ActiveMQ 5.15.15(不是 Artemis 引擎),并且我使用的是没有官方 JMS 库的 AMQP 1.0。更具体地说,我使用的是 AmazonMQ 版本,它将很快升级到 5.16.2。如果需要,我可以强制升级。

我正在使用一个AMQP 1.0 兼容库(rhea),到目前为止它为我们提供了很好的服务,但我没有找到任何关于如何让 ActiveMQ 的重新交付插件与我的库一起使用的文档。库维护者也不知道它是如何通过 ActiveMQ 公开的。

尽管尝试添加各种标头、传递注释、消息注释或应用程序属性,但我无法让重新传递插件工作。我schedulerSupport="true"的代理元素中有服务器配置。

这些是我尝试过的键,值是数字。例如,30000在允许消费者/订阅者看到队列中的消息之前的 30 秒。我在各种文档中看到了它们,尝试它们并没有什么坏处。

  • AMQ_SCHEDULED_DELAY
  • x-opt-delivery-delay
  • _AMQ_SCHED_DELIVERY

我还release收到了来自客户端的消息,这意味着它无法传递(还将一个值传递给代理失败并增加尝试传递计数)。虽然交付尝试的数量增加了,但延迟和指数退避似乎并没有在经纪人层面发挥作用。

我看到 STOMP 协议在发布时允许使用标头,这允许更清楚地设置选项。但是,除非这样做有意义,否则我不想切换所有内容。

我还看到了另一种通过 REST API 将延迟消息作为主题发送的功能,但我不确定这是否旨在成为生产用例。

所以现在,我要么在看:

  1. 将消息在内存中保留一段时间,并在延迟后尝试重新发布或释放它
  2. 调查STOMP,看看redelivery插件是否适用于它

但我希望有人知道在哪里实现这一点。

我的 redeliveryPolicy 是基本的:

更新

我正在使用 auth 插件,并且有一个条目似乎是用于内置进程的。我认为这来自示例/默认配置。快速搜索似乎没有很多关于此的文档。我可以尝试向其他用户开放访问权限,但在当前设置下,每次更新/重新启动最多可能需要 15 分钟。

评论澄清

  • 我的主要目标是延迟重新传递,因此消费者不会看到被放回队列 n 秒内的失败消息。
  • 我从没有特殊的标题/属性/注释+重新交付插件开始,这也不起作用。
0 投票
0 回答
89 浏览

rabbitmq - 如何从 amazon mq 的 rabbit mq setup 访问“rabbitmqctl”

我已经使用 Amazon MQ 服务设置了 Rabbit MQ 服务器。我可以通过 URL 访问其基于 Web 的 GUI。有没有办法可以访问这个实例的“rabbitmqctl”,这是 Rabbit MQ 提供的命令行工具?

0 投票
0 回答
22 浏览

lambda - 发生错误时,MQ 触发器会调用 66 次 lambda

我正在使用亚马逊 MQ。我有一个 lambda,它通过 MQ 触发器使用来自代理的消息。但是,当消息无效并且 lambda 引发错误时,MQ 会调用 lambda 66 次。我尝试更改 Amazon MQ 代理中的重新传递策略,但没有帮助。代理配置不影响 MQ 触发器的重新传递策略。如果 MQ 触发器出错,是否可以减少重试次数?

0 投票
0 回答
31 浏览

java - 单个实例的多个使用者会话

我们正在使用托管 ActiveMQ 的 Amazon MQ 服务,并且我们遇到了单个JMS 消费者处理消息的速度非常慢的性能问题。

ActiveMQ 控制台显示有多个消费者会话,但如前所述,只有一个消费者实例。

我们正在使用的引擎盖Spring及其DefaultMessageListenerContainer. 似乎所有这些会话都来自同一个实例。

这种行为的原因是什么?

在此处输入图像描述

0 投票
0 回答
26 浏览

amazon-web-services - AWS MQ 触发器自动禁用

我部署了一个 AWS Lambda,它在使用 Amazon MQ 触发器将消息排入 RabbitMQ 队列时触发。虽然这通常有效,但有时 MQ 触发器会被禁用,需要手动重新启用才能正常工作。这些是附加到 lambda 角色的一些相关策略。

如何解决这个问题?任何帮助深表感谢。谢谢。

0 投票
0 回答
75 浏览

amazon-web-services - Amazon Mq (RabbitMQ) 代理的 Route53 别名

我想在自定义别名下创建一个 Amazon MQ 兔子代理,例如 rabbit.mydomain.com,以便我的其他组件可以使用它而不是 AWS 提供的冗长端点名称。我读过一篇文章,其中描述了如何为此目的配置自定义域:https ://aws.amazon.com/blogs/compute/creating-static-custom-domain-endpoints-with-amazon-mq-for-兔子MQ/ . 考虑到集群部署已经有一个网络负载均衡器来处理 HA 所需的所有工作,这似乎过于复杂,尽管它似乎是 Amazon Mq 内部架构的一部分:https ://docs.aws.amazon .com/amazon-mq/latest/developer-guide/rabbitmq-broker-architecture-cluster.html

鉴于我希望自定义名称仅由与我的代理位于同一 VPC 内的组件使用(不需要公共可用性),有没有更简单的解决方案?我可以只为 Amazon Mq 在实例化新代理时自动创建的 VPC 接口终端节点创建一个 Route53 别名,还是不够?如上篇文章所述创建自定义 LB 似乎实际上是在复制 AWS 已经完成的大部分工作。