如何转发汇总交易所的Kafka标头?

时间:2019-05-29 15:10:03

标签: apache-kafka apache-camel

我正在尝试在KafkaProducer前面使用骆驼聚合器。目前看来,KafkaProducer不可能将类型Exchange的每个元素转换为ProducerRecord。另外,ProducerRecord为每个消息设置相同的标头(这是gloabel Exchange聚合的标头)。参见骆驼2.23 KafkaProducer:

 @Override
                public ProducerRecord next() {
                    // must convert each entry of the iterator into the value according to the serializer
                    Object next = msgList.next();
                    Object value = tryConvertToSerializedType(exchange, next, endpoint.getConfiguration().getSerializerClass());

                    if (hasPartitionKey && hasMessageKey) {
                        return new ProducerRecord(msgTopic, partitionKey, null, key, value, propagatedHeaders);
                    } else if (hasMessageKey) {
                        return new ProducerRecord(msgTopic, null, null, key, value, propagatedHeaders);
                    } else {
                        return new ProducerRecord(msgTopic, null, null, null, value, propagatedHeaders);
                    }
                }

对于我的用例,我将需要汇总交换并使用body AND标头转发每个单独的交换。 这意味着在上面的代码中,我需要类似value转换next.getBody并将标头设置为next.getHeaders的东西。 有可能这样做,并且不编写自定义骆驼组件以适应当前情况吗?

0 个答案:

没有答案