You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "David Handermann (Jira)" <ji...@apache.org> on 2023/03/07 22:04:00 UTC

[jira] [Created] (NIFI-11259) Redesign Kafka Component Integration

David Handermann created NIFI-11259:
---------------------------------------

             Summary: Redesign Kafka Component Integration
                 Key: NIFI-11259
                 URL: https://issues.apache.org/jira/browse/NIFI-11259
             Project: Apache NiFi
          Issue Type: Epic
          Components: Extensions
            Reporter: David Handermann
            Assignee: David Handermann


NiFi has supported integration with Kafka across a number of major release versions. As Kafka has continued to release new major versions, NiFi integration has followed a general pattern of duplicating existing code, updating Kafka libraries, and making small modifications. Although this approach has allowed NiFi to support a range of Kafka versions, it has made Kafka components difficult to maintain.

A new approach should be designed and implemented that abstracts access to Kafka library components. This approach should provide more maintainable Kafka Processors, and also define a better path to support new major Kafka releases.

The general approach should consist of a NiFi Controller Service and supporting classes that abstract Kafka operations for publishing and consuming messages. The Controller Service interface should not have any dependencies on Kafka libraries, making it independent of Kafka versions. The interface should define a contract for accessing Kafka Brokers so that Controller Service implementations will be responsible for connection and authentication settings. Controller Service implementations should be aligned to major Kafka versions, allowing minor dependency version updates without changing Controller Service implementations.

New Kafka Processors should be designed and implemented to use the Controller Service interface, without requiring knowledge of Kafka connection details. New Processors should support the same basic production and consumption capabilities, with configurable strategies for Kafka Record handling. These Processors should support the same capabilities as current Processors, including treating entire FlowFiles as Kafka Records, as well as processing FlowFiles using a configurable delimiter or using NiFi Record services.

New Kafka components should build on the pattern of the nifi-kafka-shared module to promote code reuse across major Kafka versions.

The new decoupled Kafka Processors and Controller Services should enable better unit testing. The Testcontainers library should considered for integration testing with different Kafka runtime versions.

Documentation should be written to describe common migration scenarios from existing Kafka Processors to new components.



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