Solace NIFI JMSConnectionFactoryProvider
Solace NIFI JMSConnectionFactoryProvider
我正在尝试使用 Appache NIFI ConsumeJMS 处理器连接到不同于默认设置的 VPN 上的 Solace Queues。当我尝试启用 JMSConnectionFactoryProvider 时,出现以下错误:
JMSConnectionFactoryProvider Failed to invoke @OnEnabled method due to
java.lang.IllegalStateException: java.lang.IllegalStateException:
Failed to load and/or instantiate class
'com.solacesystems.jms.SolConnectionFactory'
NIFI JMSConnectionFactoryProvider 提供通用服务来创建特定于供应商的 javax.jms.ConnectionFactory 实现。成功配置此服务后,即可提供 ConnectionFactory。
为什么 NIFI 无法在 Solace JMS API Jar 文件中找到 class?
-----更新--------
Solace JMS API 10.1.0 现在包含一个零参数默认构造函数,现在可以与 NiFi 集成。
这是一个示例配置:
- 控制器:
MQ ConnectionFactory 实现设置为 com.solacesystems.jms.SolConnectionFactoryImpl
。
- ConsumeJMS 处理器:
用户名字段也可以采用"myUsername@myMessageVPN".
的形式
----- 原创 ------
这里的问题是 Apache NiFi 没有使用可移植的方法来创建 ConnectionFactory
。它试图通过调用一个零参数默认构造函数来创建一个 ConnectionFactory
,但不能保证一个存在。
// From https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProvider.java
private void createConnectionFactoryInstance(ConfigurationContext context) {
String connectionFactoryImplName = context.getProperty(CONNECTION_FACTORY_IMPL).evaluateAttributeExpressions().getValue();
this.connectionFactory = Utils.newDefaultInstance(connectionFactoryImplName);
}
请注意,在 NiFi 的 JIRA https://issues.apache.org/jira/browse/NIFI-2701 到 "Add JNDI Factory support for JMS ConnectionFactory service" 上有一个条目。 (该条目的初始描述有点混乱,但评论更清楚。)
此时,Solace 仅支持通过标准 JNDI 查找 - javax.naming.InitialContext.lookup()
和通过 Solace 的专有方法 - SolJmsUtility.createConnectionFactory()
.
创建 ConnectionFactory
Solace 将研究为 ConnectionFactory
.
实现零参数默认构造函数是否可行
在 http://dev.solace.com/integration-guides/nifi/ 开发并发布了 JNDI 连接提供程序。对这个提供商感兴趣的人,值得一探究竟。
我正在尝试使用 Appache NIFI ConsumeJMS 处理器连接到不同于默认设置的 VPN 上的 Solace Queues。当我尝试启用 JMSConnectionFactoryProvider 时,出现以下错误:
JMSConnectionFactoryProvider Failed to invoke @OnEnabled method due to java.lang.IllegalStateException: java.lang.IllegalStateException: Failed to load and/or instantiate class 'com.solacesystems.jms.SolConnectionFactory'
NIFI JMSConnectionFactoryProvider 提供通用服务来创建特定于供应商的 javax.jms.ConnectionFactory 实现。成功配置此服务后,即可提供 ConnectionFactory。
为什么 NIFI 无法在 Solace JMS API Jar 文件中找到 class?
-----更新--------
Solace JMS API 10.1.0 现在包含一个零参数默认构造函数,现在可以与 NiFi 集成。
这是一个示例配置:
- 控制器:
MQ ConnectionFactory 实现设置为 com.solacesystems.jms.SolConnectionFactoryImpl
。
- ConsumeJMS 处理器:
用户名字段也可以采用"myUsername@myMessageVPN".
的形式----- 原创 ------
这里的问题是 Apache NiFi 没有使用可移植的方法来创建 ConnectionFactory
。它试图通过调用一个零参数默认构造函数来创建一个 ConnectionFactory
,但不能保证一个存在。
// From https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProvider.java
private void createConnectionFactoryInstance(ConfigurationContext context) {
String connectionFactoryImplName = context.getProperty(CONNECTION_FACTORY_IMPL).evaluateAttributeExpressions().getValue();
this.connectionFactory = Utils.newDefaultInstance(connectionFactoryImplName);
}
请注意,在 NiFi 的 JIRA https://issues.apache.org/jira/browse/NIFI-2701 到 "Add JNDI Factory support for JMS ConnectionFactory service" 上有一个条目。 (该条目的初始描述有点混乱,但评论更清楚。)
此时,Solace 仅支持通过标准 JNDI 查找 - javax.naming.InitialContext.lookup()
和通过 Solace 的专有方法 - SolJmsUtility.createConnectionFactory()
.
ConnectionFactory
Solace 将研究为 ConnectionFactory
.
在 http://dev.solace.com/integration-guides/nifi/ 开发并发布了 JNDI 连接提供程序。对这个提供商感兴趣的人,值得一探究竟。