Skip to content

NIFI-16026 - Add Hex format for kafka messages in ConsumeKafka#11356

Open
awelless wants to merge 1 commit into
apache:mainfrom
awelless:NIFI-16026
Open

NIFI-16026 - Add Hex format for kafka messages in ConsumeKafka#11356
awelless wants to merge 1 commit into
apache:mainfrom
awelless:NIFI-16026

Conversation

@awelless

Copy link
Copy Markdown
Contributor

Summary

NIFI-16026

Add a 'Header Format' property (String/Hex) to ConsumeKafka so binary Kafka Record Header values can be written as a lowercase hexadecimal string instead of being corrupted by charset decoding. The existing 'Header Encoding' property keeps its meaning (the character set used for the String format) and is shown only when Header Format is String. Existing flows are unchanged and no property migration is needed.

Header decoding is resolved once into a HeaderValueConverter in onScheduled and applied uniformly to FlowFile attributes and the wrapper/inject-metadata record header fields. Internal batch headers (kafka.max.offset, kafka.count) decode as fixed UTF-8, matching how they are written.

Also add unit tests for KafkaUtils.toKeyString and correct the KeyEncoding HEX description, which claimed uppercase output although HexFormat.of() emits lowercase.

Tracking

Please complete the following tracking steps prior to pull request creation.

Issue Tracking

Pull Request Tracking

  • Pull Request title starts with Apache NiFi Jira issue number, such as NIFI-00000
  • Pull Request commit message starts with Apache NiFi Jira issue number, as such NIFI-00000
  • Pull request contains commits signed with a registered key indicating Verified status

Pull Request Formatting

  • Pull Request based on current revision of the main branch
  • Pull Request refers to a feature branch with one commit containing changes

Verification

Please indicate the verification steps performed prior to pull request creation.

Build

  • Build completed using ./mvnw clean install -P contrib-check
    • JDK 21
    • JDK 25

Licensing

  • New dependencies are compatible with the Apache License 2.0 according to the License Policy
  • New dependencies are documented in applicable LICENSE and NOTICE files

Documentation

  • Documentation formatting appears as expected in rendered files

Add a 'Header Format' property (String/Hex) to ConsumeKafka so binary
Kafka Record Header values can be written as a lowercase hexadecimal
string instead of being corrupted by charset decoding. The existing
'Header Encoding' property keeps its meaning (the character set used for
the String format) and is shown only when Header Format is String, so
existing flows are unchanged and no property migration is needed.

Header decoding is resolved once into a HeaderValueConverter in
onScheduled and applied uniformly to FlowFile attributes and the
wrapper/inject-metadata record header fields. Internal batch headers
(kafka.max.offset, kafka.count) decode as fixed UTF-8, matching how they
are written.

Also add unit tests for KafkaUtils.toKeyString and correct the KeyEncoding
HEX description, which claimed uppercase output although HexFormat.of()
emits lowercase.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant