Java 将Boomi JMS连接器配置到ActiveMQ Artemis

Java 将Boomi JMS连接器配置到ActiveMQ Artemis,java,activemq-artemis,boomi,Java,Activemq Artemis,Boomi,我一直在使用Boomi中的JMS连接器来连接ActiveMQ Artemis 2.14,但使用客户端库ActiveMQ-all-5.15.11.jar和工厂org.apache.ActiveMQ.jndi.ActiveMQInitialContextFactory这是可行的,除了我在创建堆中大量org.apache.activemq.artemis.core.server.impl.MessageReferenceImpl对象时遇到问题,这些对象与实际消息无关,而是与activemq.advis

我一直在使用Boomi中的JMS连接器来连接ActiveMQ Artemis 2.14,但使用客户端库ActiveMQ-all-5.15.11.jar和工厂
org.apache.ActiveMQ.jndi.ActiveMQInitialContextFactory
这是可行的,除了我在创建堆中大量
org.apache.activemq.artemis.core.server.impl.MessageReferenceImpl
对象时遇到问题,这些对象与实际消息无关,而是与
activemq.advision.TempQueue
关联

因此,我尝试使用ActiveMQ Artemis 2.14客户端设置Boomi JMS连接器。我已将以下库导入Atom:

  • activemq-core-5.4.1.jar
  • artemis-core-client-2.14.0.jar
  • artemis-jms-client-2.14.0.jar
  • artemis-jms-client-all-2.14.0.jar
  • fscontext-4.6-b01.jar
  • geronimo-j2ee-management_1.1_spec-1.0.1.jar
然后我创建了一个自定义库,将其设置为Connector JMS,并添加了上述库并部署到Atom中。在连接器中,我指定了ActiveMQ和ConectionFactory
org.apache.ActiveMQ.artemis.jndi.ActiveMQInitialContextFactory

这给了我一个java转储,抱怨“无法创建初始上下文”和“无效的代理URL” 我的URL有点花哨,但它适用于另一个ActiveMQ JMS连接器

故障转移:(tcp://[主机]:61616,tcp://[主机]:61616)?startupMaxReconnectAttempts=2&maxReconnectAttempts=0&maxReconnectDelay=1000 所以我尝试了一个简单的URL,就是
tcp://[host]:61616
这给了我一个奇怪的错误:“执行进程时出现意外错误:java.lang.NoClassDefFoundError:org/jboss/logging/Logger”

那么这是否意味着我包含了一个我不需要的库,它需要jboss记录器,或者我真的需要jboss记录器库


非常感谢您的指导。

这里有很多问题需要讨论。我会轮流拿

…我在堆中创建大量…对象时遇到问题,这些对象与实际消息无关,而是与
ActiveMQ.advision.TempQueue
关联

您应该能够通过在客户端正在使用的
broker.xml
中的
acceptor
上设置
supportdvisory=false
来解决此问题。本节将对此进行讨论

我已将以下库导入Atom中

您实际需要的唯一库是
artemis-jms-client-all-2.14.0.jar
。顾名思义,它包含所有ActiveMQ Artemis客户端代码以及所有依赖项(例如Netty、JMS API类、JBoss日志框架等)

在连接器中,我指定了ActiveMQ和ConectionFactory
org.apache.ActiveMQ.artemis.jndi.ActiveMQInitialContextFactory

org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
不是JMS
ConnectionFactory
实现。它是JNDI的
InitialContextFactory
实现

这给了我一个java转储,抱怨“无法创建初始上下文”和“无效代理URL”我的URL有点花哨,但它适用于其他ActiveMQ JMS连接器

您使用的URL适用于用于ActiveMQ 5.x的OpenWire JMS客户端(您以前使用过)。但是,对于用于ActiveMQ Artemis(您现在正在使用)的核心JMS客户机来说,它是无效的。您可以使用类似以下内容:

(tcp://[host]:61616,tcp://[host]:61616)?ha=true&initialConnectAttempts=2&reconnectAttempts=0&maxRetryInterval=1000