问题描述
处理后是否可以使用NiFi确认来自JMS的消息?
更具体地说,我想使用ConsumeJMS处理器从队列中读取消息,进行处理(使用多个NiFi处理器),使用PublishKafka处理器将其发送到Kafka中,然后才向JMS发送确认。换句话说,我不想在将消息提交到Kafka之前将其从队列中删除。
我知道有多种确认模式,但是似乎没有一个可以满足我的需要。我的目的是在处理完消息后能够发送响应时,达到与HandleHttpRequest和HandleHttpResponse处理器类似的效果。
解决方法
在大多数情况下,例如JMS和Kafka,检索数据的nifi处理器会将其写入NiFi的内部存储库,提交到内部存储库,然后将确认发送到源系统。因此,在确保它位于NiFi中之后,它将在源处理器中发送该ack。
有一项名为NiFi无状态的工作,它更加适合您所描述的,它可以运行一系列线性处理器并执行所有提交/确认直到最后。这项工作是相当新的并且正在开发中。