我正在尝试在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
的东西。
有可能这样做,并且不编写自定义骆驼组件以适应当前情况吗?