Утешение NIFI JMSConnectionFactoryProvider

Я пытаюсь подключиться к очередям утешения по VPN, отличной от используемой по умолчанию, с помощью Appache NIFI ConsumeJMS Processor. Когда я пытаюсь включить JMSConnectionFactoryProvider, я получаю следующую ошибку:

JMSConnectionFactoryProvider Не удалось вызвать метод @OnEnabled из-за java.lang.IllegalStateException: java.lang.IllegalStateException: не удалось загрузить и / или создать экземпляр класса com.solacesystems.jms.SolConnectionFactory.

JMSConnectionFactoryProvider NIFI предоставляет универсальный сервис для создания реализаций javax.jms.ConnectionFactory для конкретного поставщика. ConnectionFactory может быть обслужен после успешного конфигурирования этой службы.

Почему NIFI не удается найти класс в Jar-файлах Solace JMS API?

2 ответа

Решение

----- Обновить --------

Solace JMS API 10.1.0 теперь содержит конструктор по умолчанию с нулевым аргументом, и теперь возможна интеграция с NiFi.

Вот пример конфигурации:

  1. контроллер: Конфигурация контроллера

Реализация MQ ConnectionFactory установлена ​​на com.solacesystems.jms.SolConnectionFactoryImpl,

  1. Процессор ConsumeJMS: Процессор 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);
}

Обратите внимание, что на странице JIRA NiFi https://issues.apache.org/jira/browse/NIFI-2701 есть запись "Добавить поддержку фабрики JNDI для службы JMS ConnectionFactory". (Первоначальное описание этой записи немного сбивает с толку, но комментарии более понятны.)

На данный момент Solace поддерживает только создание ConnectionFactory через стандартный поиск JNDI - javax.naming.InitialContext.lookup() и с помощью запатентованного метода Solace - SolJmsUtility.createConnectionFactory(),

Утешение будет исследовать, возможно ли реализовать конструктор по умолчанию с нулевым аргументом для ConnectionFactory,

Поставщик JNDI-соединения разработан и опубликован по адресу http://dev.solace.com/integration-guides/nifi/. Для людей, которые заинтересованы в этом провайдере, это стоит выяснить.

Другие вопросы по тегам