java - 将 Boomi JMS 连接器配置到 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 中:
- 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
然后我创建了一个自定义库,将其设置为连接器 JMS,并添加上述库并部署到 Atom。在连接器中我指定了 ActiveMQ 和 ConnectionFactoryorg.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 记录器库?
对此的任何指导表示赞赏。
解决方案
这里有很多问题要讨论。我会依次拿走每一个。
...我遇到了在堆中创建大量...对象的连接问题,这些对象与实际消息无关,而是与
ActiveMQ.Advisory.TempQueue
.
您应该能够通过设置客户使用supportAdvisory=false
的环境来解决此acceptor
问题。broker.xml
这在 ActiveMQ Artemis 用户手册的 OpenWire 章节中进行了讨论。
我将以下库导入 Atom...
您真正需要的唯一artemis-jms-client-all-2.14.0.jar
库是. 顾名思义,它包含所有ActiveMQ Artemis 客户端代码以及所有依赖项(例如 Netty、JMS API 类、JBoss 日志框架等)。
在连接器中我指定了 ActiveMQ 和 ConnectionFactory
org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
该类org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
不是JMS实现ConnectionFactory
。它是InitialContextFactory
JNDI 的一个实现。
这给了我一个 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
推荐阅读
- c# - 从其他页面更改 MainWindow 内容
- python - Jupyter Notebook ModuleNotFoundError:没有名为“graphviz”的模块
- mysql - MySQL - 大写每个单词的第一个字母,包括土耳其语字符
- reactjs - 使用 react-testing-library 在 useEffect 中测试 api 调用
- javascript - Javascript:动态加载 JSON(取决于文件数量)
- debugging - 当 Visual Studio 调试器打开时,一些 Web Api 端点非常慢
- php - 在总小时列中的 mysql 中显示“小时”
- android - Android微调器下拉图标隐藏在背景图像下
- r - 将变量从因子更改为数字会更改顺序
- nginx - 如何命令 Nginx 停止重定向到其 404 页面?