Apache nifi Solace NIFI JMSConnectionFactoryProvider
我正在尝试使用Appache NIFI JMS处理器连接到不同于默认VPN的Solace队列。当我尝试启用JMSConnectionFactoryProvider时,出现以下错误: 由于以下原因,JMSConnectionFactoryProvider未能调用@OneEnabled方法: java.lang.IllegalStateException:java.lang.IllegalStateException: 未能加载和/或实例化类 'com.solacesystems.jms.SolConnectionFactory' NIFI JMSConnectionFactoryProvider提供了一个通用服务来创建特定于供应商的javax.jms.ConnectionFactory实现。成功配置此服务后,即可为ConnectionFactory提供服务 为什么NIFI在Solace JMS API Jar文件中找不到该类?--Update-------- Solace JMS API 10.1.0现在包含一个零参数默认构造函数,现在可以与NiFi集成 以下是一个配置示例:Apache nifi Solace NIFI JMSConnectionFactoryProvider,apache-nifi,solace,Apache Nifi,Solace,我正在尝试使用Appache NIFI JMS处理器连接到不同于默认VPN的Solace队列。当我尝试启用JMSConnectionFactoryProvider时,出现以下错误: 由于以下原因,JMSConnectionFactoryProvider未能调用@OneEnabled方法: java.lang.IllegalStateException:java.lang.IllegalStateException: 未能加载和/或实例化类 'com.solacesystems.jms.SolCo
com.solacesystems.jms.SolConnectionFactoryImpl
连接工厂
。它试图通过调用一个零参数默认构造函数来创建一个连接工厂
,但不能保证它存在
// 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中有一个条目是“为JMS ConnectionFactory服务添加JNDI工厂支持”。(该条目的初始描述有点混乱,但注释更清晰。)
此时,Solace仅支持通过标准JNDI查找-javax.naming.InitialContext.lookup()
和Solace的专有方法-soljmsutability.createConnectionFactory()
创建连接工厂
Solace将调查为
连接工厂
实现零参数默认构造函数是否可行。JNDI连接提供程序的开发和发布时间为。对于对此提供商感兴趣的人来说,值得一看。这一行中没有足够的信息来确定为什么Apache NiFi无法加载Solace的JMS ConnectionFactory。可能的错误范围从类路径中找不到的类到配置错误。确定根本原因的最佳方法是启用Solace API日志,并提供更多详细信息。关于如何启用Solace API日志的详细信息可以在深入查看NiFi日志时找到,我看到了这一点:原因:java.lang.NoSuchMethodException:com.solacesystems.jms.SolConnectionFactory。()位于java.lang.Class.getConstructor0(Class.java:3082)~[na:1.8.0121]位于java.lang.Class.newInstance(Class.java:412)~[na:1.8.0121]。。。省略18个公共帧没有com.solacesystems.jms.SolConnectionFactory.
方法。你知道Solace JMS连接工厂是如何创建的吗?以下是我能找到的:这太棒了。谢谢,我已经创建了同样的东西,但是意识到NIFI JMS消费者不是一个不能满足我们需求的监听器。我需要开发一个全新的处理器来提供JMS侦听器。