Apache nifi Solace NIFI JMSConnectionFactoryProvider

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

我正在尝试使用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集成

以下是一个配置示例:

  • 控制器:
  • MQ ConnectionFactory实现设置为
    com.solacesystems.jms.SolConnectionFactoryImpl

  • 使用JMS处理器:
  • 用户名字段也可以采用“myUsername@myMessageVPN“

    -----原创的-------

    这里的问题是apachenifi没有使用可移植的方法来创建
    连接工厂
    。它试图通过调用一个零参数默认构造函数来创建一个
    连接工厂
    ,但不能保证它存在

    // 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侦听器。