[ 
https://issues.apache.org/jira/browse/NIFI-12783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17817253#comment-17817253
 ] 

Denis Jakupovic commented on NIFI-12783:
----------------------------------------

Hi [~pvillard] 

yes yielding is a necessity for a lot of people. The current behavior should be 
preserved as an option in the processor e.g. failure strategy. Currently there 
is rollback and route to failure in the kafka processors but they are not 
working as expected on connectivity issues I guess.

However what I meant with a standard approach in NiFi: The relationships are 
seen as a reaction feature on specific events - do that on retry and do that on 
failure etc. The expected behavior on a timeout should be route in failure, so 
retry (penalize and/or yield), drop or route into another processor or even 
retry again with the RetryFlowFile processor.

If Kafka has a downtime for several hours the queues are back pressured. With 
the current behavior the FF are stuck in the inbound queue and there is no 
reaction possible e.g. store in s3 or even in another kafka cluster. There a 
lot of use cases where data needs to be transmitted immediately where ordering 
is not important.

Best

Denis

> Kafka Producer Processors do not route in failure queue on timeout
> ------------------------------------------------------------------
>
>                 Key: NIFI-12783
>                 URL: https://issues.apache.org/jira/browse/NIFI-12783
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>    Affects Versions: 1.23.2
>            Reporter: Denis Jakupovic
>            Priority: Major
>
> Hi,
> the Kafka producer processors do not route the FlowFiles on a timeout e.g. 
> into the failure connection. They are yielded in the incomming connection. 
> You can see the behaviour here e.g.:
> [https://stackoverflow.com/questions/71460008/apache-nifi-publishkafka-timeout-exception]
> I think this is a design flaw. I have a use case where messages should be 
> dropped after a specific configurable time. If the messages are yielded in 
> the incomming queue they are always published when the kafka broker are 
> available again. I know I can set the expiration time in secs or mins in the 
> incomming queue but it is not dynamically configurable because no attributes 
> are allowed. 
> Best
> Denis



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to