我正在使用Nifi-1.8,目前正在处理消耗来自Oracle Weblogic JMS队列中数据的NiFi Flow。 通过JndiJMSConnectionFactory应用ConsumeJMS处理器。 通过查看code,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服务器的新连接-在我看来,这似乎很麻烦,并且会在服务器上产生许多错误,因为许多重新身份验证步骤似乎失败。
我确实在这里找到其他questions,但没有答案。
我想像评论中提到的@daggett那样对处理器进行返工。
为什么处理器每次都会创建一个新的MessageConsumer?至少从nifi-1.1开始,这段代码就在那里。 我想知道这背后是否有原因。