问题标签 [amq]

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 回答
462 浏览

redhat - Apache ActiveMQ Artemis 集群中的消息顺序

我正在尝试在 Apache Artemis 集群中实现消息排序。连接到集群的生产者/消费者实现高可用性。因此,在某一时刻,同一应用程序的两个实例将连接到主题或队列。到目前为止,我可以找到以下两种可用于在 Red Hat AMQ / Artemis 集群中实现排序的方法:

  1. 消息组(根据文档,仅当集群中每个节点有一个消费者时才可靠)
  2. 排他队列(消息顺序仅保留在单个节点上)。

我完全理解使用集群和期望消息排序是相互冲突的要求,但由于消费者无法处理处理乱序消息的复杂性,这仍然是我正在从事的项目中实施的要求。

在 Artemis ActiveMQ / Red Hat AMQ 集群中,可以用来实现消息排序的上述替代方案有哪些?

0 投票
0 回答
166 浏览

jboss - ActiveMQ 清理似乎只是闲逛的旧队列?

所以我有一个每天都在增长的 jboss AMQ 6.3 集群(OpenShift 中有 3 个 pod)。在 Java 控制台中查看,有很多队列命名为聪明的东西,比如

我假设这是 KahaDB 大小不断增长的原因(目前每个拆分为 120mb,上周为 100...)有没有办法清理这些可能的死队列以阻止我们每 2 周耗尽内存?

编辑:不太确定错误用户是这里的恶棍..但它确实在不断增长..

Edit2:这是 activemq.xml

0 投票
1 回答
140 浏览

redhat - ActiveMQ Artemis JMS 共享订阅

我有一个单节点 ActiveMQ 实例,其中两个竞争消费者连接到一个主题。根据 JMS 2.0 规范共享主题订阅。共享订阅确实保证只有两个订阅者(使用相同的订阅名称)才能收到消息。但我注意到的是,它不能保证只有在第一条消息被确认时才会传递第二条消息。如果第一个消费者需要时间来确认消息,则即使在消费者将第一个消息的确认发送给代理之前,第二个消息也会传递给免费消费者。这是标准行为吗?有没有办法阻止代理在确认第一条消息之前传递第二条消息?

0 投票
1 回答
76 浏览

java - 是否有可能或是否有人知道更改 AMQ 消息的 JMSTimestamp 以发送到代理的方法?

我正在编写一个使用 springboot java 框架与多个代理接口的应用程序。我正在利用 JMS 浏览/阅读超过 4 小时的消息。主要问题是尝试为此功能生成单元测试。这是因为测试必须向代理发送一条旧消息,并且根据我在此处阅读的文章,该文章解释了更改时间戳没有任何作用,因为一旦将消息发送到代理,它就会重置。基本上,这篇文章呈现了消息过时的任何可能性。有没有人有一些工作?或者知道我可以做到这一点的方法吗?

我已经尝试过设置 JMSTimestamp message.setJMSTimestamp(System.currentTimeMillis() - 14400000)。在运行时,它显示时间戳为 4 小时,但在 jconsole 中检查消息仅将其显示为当前日期/时间(例如Wed Apr 14 13:41:27 EDT 2021)。

0 投票
1 回答
92 浏览

spring-boot - 消息未按顺序发送到 Java Camel 路由应用程序

我面临的问题很奇怪。我的应用程序是一个 Spring Boot 应用程序,我使用 Camel 路由来监听 AMQ 7,然后处理消息,直到它存储在数据库中或发送到另一个 AMQ 7 实例。问题是消息是通过 Camel 从 AMQ 消耗的,但它没有维护应用程序日志中的顺序。这意味着在第一条消息的流程完成之前,我可以看到日志开始打印,因为另一条消息落入 AMQ,这使得很难跟踪日志属于来自 AMQ 的哪条消息。是 AMQ 或 Camel 路线的问题吗?任何建议都非常感谢。

0 投票
1 回答
130 浏览

redhat - 为什么 Red Hat AMQ 7.7.0.GA 抛出异常 Invalid content was found 以元素“broker-connections”开头

我正在尝试使用broker-connectionsRed Hat AMQ 7.7.0.GA 版本中的配置元素,但它给了我以下错误。同样适用于 AMQ 7.8.0 开发版本。同样作为 Artemis 的文档,它说您可以使用它。详细信息可以在这里找到。

错误

配置

我在broker.xml

0 投票
1 回答
117 浏览

activemq - AMQ INDIVIDUAL_ACKNOWLEDGE 模式

我正在使用 INDIVIDUAL_ACKNOWLEDGE 模式接收消息并使用通过 Openwire 协议实现 JMS 标准的 C++ CMS 库手动确认从 AMQ 接收到的消息。我有两个消费者(消费者 1,消费者 2)从同一个队列接收。当 Consumer1 收到消息时,Consumer 确认消息。当我杀死消费者 1 时,消费者 2 会收到消息。我没想到 Consumer2 会收到它,因为它已经被确认了。看起来我对 acknowledge() 的调用被忽略了。

任何线索或指示都会有所帮助。尝试连接到 ActiveMQ 5.12.1 或 Red Hat AMQ 7.2.1,同样的行为表明问题不在于 Messaging Broker 而是我这边。我对 acknowledge() 的调用被忽略了。

很高兴提供更多信息。

这是消息接收器调用:

定义:

留言电话:

确认呼叫:

消费者 1 输出:

在此处输入图像描述

杀了它。

消费者2输出:

在此处输入图像描述

0 投票
1 回答
141 浏览

jms - AMQ 读取 simpleString 时出错,length=xxx 大于 readableBytes=yyy

我正在尝试解决此 ActiveMQ Artemis 错误。

似乎偶尔的消息对于 来说太大了SimpleString,并且没有发送,它会发送到 DLQ。

我能看到的最有可能的问题是 和 之间的相似readableBytes=127646_AMQ_LARGE_SIZE=127651

但是,从文档来看,这个 _AMQ_LARGE_SIZE 是大消息的阈值,它应该是 2GB,而这个消息是什么,1.36MB?

这是怎么回事?

编辑:

我在 Fuse/OSGi 中。2.6.3.redhat-00015 用于 ActiveMQ Artemis JMS 客户端 OSGi。2.21.5 用于骆驼 amqp。我不知道它是什么 Artemis 版本。有 1000 多次成功交付。只有6个失败。

0 投票
0 回答
25 浏览

activemq - 如何以编程方式检索 Red Hat AMQ 上次入队/出队日期时间?

是否有 API(单个或组合)可以帮助检索 Red Hat AMQ 6.3 上托管的队列的最后入队日期时间和最后出队日期时间?

我的意图是观察/监控消费者是否正在消费消息或卡住。例如,如果最后一个出队时间是最近的(例如在系统时间的 X 分钟内),我会说有/正在使用/正在运行的消费者。如果出队时间超出 X 分钟范围,我正在考虑确定队列中剩余的基本消息。

0 投票
1 回答
135 浏览

python - python 中的 stomp.ConnectionListener 在从 ActiveMQ 出列消息时是否保存任何数据?

我想将消息从 AMQ 拉到 python。我想使用 python 进行批处理(例如,如果队列中有 1000 条消息,我需要每 100 条消息出列并处理它们,然后获取接下来的 100 条消息并处理......直到所有消息都出列。)

这是我的 batchListener 的 python 代码:

我写了一个模拟器来将消息推送到 AMQ。一旦我将 1000 条消息推送到 ActiveMQ。当消费者启动时,python 代码将开始从 ActiveMQ 中提取数据,但 python 代码一次提取 100 多条消息。(仅对 100 条消息进行处理,但有超过 100 条消息正在出队)。即,对于最后一批(100 条消息),我们在 ActiveMQ 中看不到任何消息,但消息正在 python 进程中获取。

1. stomp 在从 ActiveMQ 出队时是否持有任何消息? 2. 批量处理时 stomp 是否保存任何数据?