配置 Boomi JMS 连接器到 ActiveMQ Artemis

Configuring Boomi JMS connector to ActiveMQ Artemis

我一直在 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.Advisory.TempQueue.

所以我正在尝试使用 ActiveMQ Artemis 2.14 客户端设置 Boomi JMS 连接器。我将以下库导入 Atom:

然后我创建了一个Custom Library,将其设置为Connector JMS,并添加了上述库并部署到Atom。在连接器中,我指定了 ActiveMQ 和 ConectionFactory org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory

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

failover:(tcp://[host]:61616,tcp://[host]:61616)?startupMaxReconnectAttempts=2&maxReconnectAttempts=0&maxReconnectDelay=1000

所以我尝试了一个简单的 URL,只是 tcp://[host]:61616 这给了我一个奇怪的错误:“执行过程中发生意外错误:java.lang.NoClassDefFoundError:org/jboss/logging/Logger”

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

如有任何指导,我们将不胜感激。

这里有很多问题要讨论。我会依次拿一个。

...I'm having issues with the connections creating numerous...objects in the heap, which aren't associated with the actual messages, but rather the ActiveMQ.Advisory.TempQueue.

您应该能够通过在您的客户正在使用的 broker.xml 中的 acceptor 上设置 supportAdvisory=false 来解决此问题。 OpenWire chapter in the ActiveMQ Artemis user manual.

中对此进行了讨论

I have the following libraries imported into the Atom...

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

In the connector I specified ActiveMQ, and the ConectionFactory org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory

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

This gives me a java dump, complaining that "Unable to create initial context" and "Invalid broker URL" My URL is a little fancy, but it works for the other ActiveMQ JMS connector.

您正在使用的 URL 适用于用于 ActiveMQ 5.x(您之前使用的)的 OpenWire JMS 客户端。但是,它对用于 ActiveMQ Artemis(您现在正在使用的)的核心 JMS 客户端无效。您可以改用这样的东西:

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