Почему JMSConsumer создает новый MessageConsumer для каждого сообщения в очереди? - PullRequest
0 голосов
/ 11 февраля 2019

Я использую Nifi-1.8 и в настоящее время работаю над потоками NiFi, которые используют данные из очереди Oracle Weblogic JMS.Применение процессора ConsumeJMS с помощью JndiJMSConnectionFactory.Глядя на код , NiFi создает MessageConsumer для каждого полученного сообщения.

public void consume(final String destinationName, final boolean durable, final boolean shared, final String subscriberName, final String charset,
                    final ConsumerCallback consumerCallback) {
    this.jmsTemplate.execute(new SessionCallback<Void>() {
        @Override
        public Void doInJms(final Session session) throws JMSException {

            final MessageConsumer msgConsumer = createMessageConsumer(session, destinationName, durable, shared, subscriberName);
            try {
...
            } catch (Exception e) {
...
            } finally {
                JmsUtils.closeMessageConsumer(msgConsumer);
            }

            return null;
        }
    }, true);
}

Исходя из того, что я вижу, это приводит к тому, что nifi открывает новое соединение с сервером jms для каждого сообщения - что мне кажется чрезмерной нагрузкой и создает много ошибок на моих серверах, так как многие изшаги повторной аутентификации кажутся неудачными.

Я нашел здесь другие вопросы , но ответов нет.

Я хотел бы переработать процессор, как @daggett, упомянутый вкомментарии.

Почему процессор каждый раз создает новый MessageConsumer?Этот кусок кода был там, по крайней мере, с nifi-1.1.Я хотел бы понять, была ли за этим причина.

...