spring-cloud / spring-cloud/spring-cloud-stream

spring-cloud-stream-binder-kafka-reactive ignores message converter configuration for producer message handler

Open
#2,810 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Java
Stars
1.1k
Forks
646
Avg merge
2d 3h
Merged PRs (30d)
8

Description

Describe the issue
spring-cloud-stream-binder-kafka-reactive ignores message converter configuration for producer message handler.

It just creates MessagingMessageConverter instance disrespecting user provided properties and beans.
See https://github.com/spring-cloud/spring-cloud-stream/blob/v4.0.4/binders/kafka-binder/spring-cloud-stream-binder-kafka-reactive/src/main/java/org/springframework/cloud/stream/binder/reactorkafka/ReactorKafkaBinder.java#L200

To Reproduce
Steps to reproduce the behavior:

  1. Provide a custom header mapper via spring.cloud.stream.kafka.binder.header-mapper-bean-name
  2. Run app
  3. Producer uses default mapper (while consumer uses overridden one.

Version of the framework
v4.0.4

Expected behavior
org.springframework.cloud.stream.binder.kafka.utils.BindingUtils#getConsumerMessageConverter is used to create a message converter (or any other way you prefer) to respect provided properties

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in binders/kafka-binder/spring-cloud-stream-binder-kafka-reactive/src/main/java/org/springframework/cloud/stream/binder/reactorkafka/ReactorKafkaBinder.java around line 200, then compare the producer path with BindingUtils#getConsumerMessageConverter. Reproduce the issue with a custom header mapper configured through spring.cloud.stream.kafka.binder.header-mapper-bean-name; done means the producer respects the supplied converter configuration instead of using the default mapper.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, kafka, spring
Domain
backend, stream-processing
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.