You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2019/10/01 10:21:00 UTC

[jira] [Resolved] (CAMEL-13878) Message is forwarded to the wrong Kafka Topic

     [ https://issues.apache.org/jira/browse/CAMEL-13878?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Claus Ibsen resolved CAMEL-13878.
---------------------------------
    Resolution: Fixed

> Message is forwarded to the wrong Kafka Topic
> ---------------------------------------------
>
>                 Key: CAMEL-13878
>                 URL: https://issues.apache.org/jira/browse/CAMEL-13878
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-kafka
>    Affects Versions: 2.24.1
>            Reporter: Klearchos Klearchou
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 3.0.0, 3.0.0.RC2
>
>
> I have 3 Apache Spring Boot applications and 3 topics.
> Let's call them Topic A, B and C and the Spring Boot applications FirstApp, SecondApp and ThridApp. I use Java DSL for the Kafka configuration.
> The FirstApp creates a message to Kafka Topic A.
> The SecondApp reads from Topic A makes transformations and passes each value to Topic B.
> The ThirdApp reads from Topic B and after transformations tries to pass it to Topic C.
> At this point through the debugger I saw that at the class  org.apache.camel.component.kafka.KafkaProducer and at the method 
> protected Iterator<ProducerRecord> createRecorder(Exchange exchange) something strange is happening.
> The headerTopic (line 140) from the following line:
> String headerTopic = exchange.getIn().getHeader(KafkaConstants.TOPIC, String.class);
> contains the topic A! The correct topic that I have clearly set through the Java DSL can be found under the line 137: 
> String topic = endpoint.getConfiguration().getTopic();
> As a workaround I have entered the following line inside a processor at the SecondProgram:
> exchange.getIn().setHeader(KafkaConstants.TOPIC, null);
> This has the side-effect that the headerTopic at line 140 is empty and thus the correct topic from line 137 is used.
> I believe that since I have clearly set the destination topic at the ThirdProgram to Topic C then Apache Camel should not override this with Topic A.
> It looks like a bug since from the method description I understand that we try to avoid circular loops.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)