问题标签 [activemq-artemis]

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

activemq-artemis - 当 artemis 关闭时,如何从生产者端检索消息?

解释:我有一个消费者和生产者,我想看到当我将消息从消费者端推送到 JMS(ARTEMIS)时,如果 artemis 已关闭,那么我的消息不会被 artemis 接受。

这意味着当我打开我的 artemis 时,消息不在 artemis 队列中,因为它们会丢失。

我想知道是否可以在消费者端的 context.xml 中设置任何配置(如缓冲区),以便我们保存推送的消息,而 artemis 仍然回到正轨。

目前我有参数。

期待。请帮忙。

0 投票
1 回答
1052 浏览

jms - MDB 部署成功:然后甚至不会写入 System.out。为什么?

我有一个使用带 HornetMQ 的 WF-8 运行的 Java EE 项目:--- 服务器端被部署为一个 .ear 包。--- 客户端是一个 Java GUI,它通过 JMS 消息传递与服务器进行通信。

收起时一切正常。

我正在尝试使用带有 ArtemisMQ 的 WF-10 来复活它,这让我很生气。

清除所有处理 Hornet -> Artemis 的异常后,我的位置如下:

--- WF 控制台确认 gotest.ear 部署没有异常。(控制台输出粘贴在下面)

--- 客户端的 Eclipse 控制台输出确认它有一个连接并且它发送了一个对象消息。(我的格式化输出粘贴在下面)

--- Standalone-full.xml 显示了我的 MDB 侦听的队列配置。AND WF 浏览器控制台双重确认。(WF的配置信息也贴在下面)

但是我的 MDB 根本不会写入或登录到 WF 控制台。即甚至不是来自它的构造方法。而且它的 onMessage() 对客户端发送的消息完全没有响应。

我很无助,因为我没有在任何地方得到异常来暗示出了什么问题。

谁能指出我正确的方向?帮助!!

MDB 代码(我已经把它切到了骨头,直到我可以让它写入或登录到 WF 控制台,承认它正在收听消息。)

独立的完整的.XML

WFLY localhost :9990 控制台配置详细信息

ECLIPSE CONSOLE OUTPUT(当客户端 GUI 打开时)(我添加了疯狂数量的 System.out.printlns 来逐行跟踪正在发生的事情。每个输出字符串都以编写该行的 Class.method () 开头。)

启动时部署 GOTEST.EAR 时的狂野控制台输出

部署后的疯狂控制台输出似乎是个问题。注意:下一个 INFO 行说 jms/queue/sendToServerQueue 不是持久的,而 WF 控制台说它配置为持久)

0 投票
1 回答
254 浏览

java - 使用 Apache Camel 将数据发送到 Wildfly 10 嵌入式 Artemis 实例并接收它们

我正在尝试将一些数据发送到 Wildfly 10 Artemis 实例并使用 Apache Camel 接收它们。在这里,我知道,这可以使用 camel-jms 组件来完成。

在这种情况下,我首先创建了一个简单的示例来检查它是否工作正常。但它在 ConnectionFactory 创建点给出了以下异常。

执行 :

常数:

进口:

但是,当我使用此处提到的纯 javax.jms(不是通过 Camel)时,这种情况会成功发生。当我直接向活动 mq(而不是 Wildfly Artemis)发送消息时,它会成功运行。

我想知道的是向 Wildfly 嵌入式 Artemis insnatnce 发送数据并使用 Apache Camel接收它们。任何人都可以对此提供一点提示吗?

0 投票
1 回答
63 浏览

messaging - ArtemisMQ - 在基于点对点的集群中工作吗?

我需要写一篇关于 ArtemisMQ 的快速评论。有一点考虑集群中ArtemisMQ的架构。根据文档(或者更确切地说我如何理解)节点独立工作 - 可以发现每个节点,然后在彼此之间创建一些核心桥连接。这似乎是P2P。我对吗?

0 投票
0 回答
884 浏览

spring-boot - JBoss ActiveMQ artemis JMS 部署问题上的 Spring 应用程序

在 EAR 中包含 Spring Boot WAR 后,应用程序 EAR 没有部署在 JBoss EAP 7.0.0 上

应用程序使用 JBOSS 7 ActiveMQ 消息传递服务并且工作正常,没有任何问题。但是,当我们在应用程序 EAR 中使用 SpringBOOT 添加 WAR 构建并尝试在集群环境中部署 EAR 时,EAR 部署会回滚并且我们会遇到异常。工厂方法“artemisServer”抛出异常;嵌套异常是 java.lang.NoSuchMethodError: org.apache.activemq.artemis.jms.server.embedded.EmbeddedJMS.setConfiguration (请参阅完整的异常跟踪)

问题在于 Spring boot 自动配置,因为当我们从应用程序类路径中删除 spring-boot-autoconfigure-1.5.4.RELEASE.jar 时,部署成功并且应用程序运行良好。我们想要一种可以专门禁用 Spring Boot ActiveMQ 自动配置的机制。

完整的异常跟踪

请建议在这种情况下可以做什么

0 投票
1 回答
3513 浏览

wildfly - Wildfly 11 连接到远程 Artemis ActiveMQ 服务器配置

看来远程客户端的 netty-connector 不开心!目前,我已经使用标准 616161 端口在本地机器上运行。我按照https://docs.jboss.org/author/display/WFLY/Connect+a+pooled-connection-factory+to+a+Remote+Artemis+Server上的说明进行操作

这是错误:

所有消息(发送和接收)都将来自活动的 mq 服务器,因为消息的生产者/消费者是使用 ActiveMQ 的传统。

从 standard-full.xml 添加到我的 xml 配置副本

我使用池连接工厂是因为文档说“它本质上是 Artemis JCA 资源适配器的入站和出站连接器的配置外观”。这正是我需要的。

我的发送代码如下所示:

当我尝试发送时,我将 connectionFactory 设为空!我的 MDB 看起来像

我错过了什么?非常感谢所有帮助。

0 投票
1 回答
309 浏览

jakarta-ee - 死信队列中的 JMSXDeliveryCount

知道如何在消息到达死信队列后获取消息的实际重新发送计数。出现,Artemis 认为这是一个新的交付,并将计数器重置为 1。

见下图: 1. 消息被 MDB 消费。2. 发生了一些不好的事情,我在上下文中调用 setRollbackOnly 直到达到最大重试次数 3。3. Artemis 向配置的DLQ 发送消息。4. DLQ Mdb 消费消息,但消息上的 JMSXDeliveryCount 读取 1 而不是3

任何想法,如何从 DLQ 中检索重试计数 3?

0 投票
1 回答
807 浏览

jms - 在 Wildfly 10 中,MDB 查找属性是否可以在standalone-full.xml 中指定,而不是在编译时绑定在 Java 源代码中?

在 Wildfly 10 中,我想将 MDB 的一些注释移动到关联的资源适配器。

根据Connect a pooled-connection-factory to a Remote Artemis Server ,可以如下注释 MDB(从引用的页面复制到此处):

有没有办法将查找决定从编译时间推迟到调用时间?我想在我的standalone-full.xml 中指定属性“useJNDI”和“destination”的值

我尝试如下注释MDB:

然后在standalone-full.xml中配置“my-remote”如下:

但收到以下错误消息:

是否必须在编译时指定查找属性?
如果我需要一个 Wildfly 实例使用 jndi 查找另一个使用非 JNDI 名称,我真的需要创建两个只是注释略有不同的 MDB 吗?

0 投票
1 回答
1747 浏览

java - ActiveMQ 主题上的并行消息消费

似乎 ActiveMQ 中的持久主题(这似乎是 JMS 本身的一个障碍)只有一个消费者可以在订阅者上处于活动状态。

也就是说,在 ActiveMQ 文档中:

JMS 持久订阅者 MessageConsumer 是使用唯一的 JMS 客户端 ID 和持久订阅者名称创建的。要符合 JMS,对于一个 JMS clientID,在任何时间点只能有一个 JMS 连接处于活动状态,并且对于一个 clientID 和订阅者名称,只有一个使用者可以处于活动状态。即,只有一个线程可以从给定的逻辑主题订阅者主动消费。

然而,其他排队系统(看起来像 Azure 服务总线这样做,基于文档),似乎很容易允许单个“订阅”上的多个线程“订阅者”。在这个时代,人们会认为这是理所当然的。

为什么会这样?这会在 JMS 和/或 ActiveMQ 的未来版本中得到解决吗?

PS对于这种情况,“虚拟主题”(上面引用的文档)似乎不是那么理想且性能不佳的解决方法,因为它似乎在后台为每个订阅者创建了一个完全独立的队列。

0 投票
1 回答
596 浏览

jms - 消息的重新排序 - Artemis

我必须运行从“queue-1”读取消息并将它们写回另一个队列“queue-2”的同一应用程序的两个实例。 

我需要两个队列中的消息按特定属性(序列号)排序,该属性最初由生产者添加到每条消息中。根据文档,在 queue-1 内,消息的顺序将被保留,因为消息是由单个生产者发送的。但是由于有多个消费者读取、处理并将处理过的消息发送到 queue-2,queue-2 中的消息顺序可能会丢失。

所以我的任务是确保消息以与从队列 1 中读取的顺序相同的顺序传递到队列 2。我已经从 Apache camel 实现了重新排序器模式,以重新排序 queue-2 中的消息。重新排序器工作正常,但由于骆驼路线在本地运行,因此会导致数据传输开销。

考虑以更好的方式做这件事,我有三个问题: 

  1. artemis 是否固有地支持使用诸如序列号之类的属性对队列内的消息进行重新排序。
  2. 是否可以在服务器内部运行路由?如果是,您能否举个例子或提供文档链接?
  3. 一些 artemis 功能,如转移(拆分)需要修改代理配置(broker.xml 文件),有没有办法以编程和动态方式完成它们,以便我可以决定何时开始转移消息?我知道这可以通过使用骆驼来完成,但我希望一切都在服务器中运行。