スタックオーバーフロー :
私は次のことを持っています
//Config setup
Properties props = ...; //setup
List<String> topicList = Arrays.asList({"A", "B", "C"});
StreamBuilder builder = new StreamBuilder();
KStream<String, String> source = builder.stream(topicList);
source
.map((k,v) -> {
//How can i get the topic of the record here
})
.to((k,v,r) -> {//busy code for topic routing});
new KafkaStream(builder.build(), properties).start();
dmkvl:
あなたが使用して必要なトピック名を取得することができますProcessorContext.topicを() 。適切でそれを提供するProcessorContext使用KStream.process()へのアクセスを取得するために、プロセッサの実装を。
また、あなたはKStream.transform()を使用することができます。
KStream<InputKeyType, InputValueType> stream2 = stream.transform(new TransformerSupplier<InputKeyType, InputValueType, KeyValue<OutputKeyType, OutputValueType>>() {
@Override
public Transformer<InputKeyType, InputValueType, KeyValue<OutputKeyType, OutputValueType>> get() {
return new Transformer<InputKeyType, InputValueType, KeyValue<OutputKeyType, OutputValueType>>() {
private ProcessorContext context;
@Override
public void init(ProcessorContext context) {
this.context = context;
}
@Override
public KeyValue<OutputKeyType, OutputValueType> transform(InputKeyType key, InputValueType value) {
this.context.topic() // topic name you need
// logic here
return new KeyValue<>(OutputKeyType key, OutputValueType value);
}
@Override
public void close() {
}
};
}
});