单个微服务中可能有多个流吗?
这是我的yaml。
bindings:
input:
destination: topic1
content-type: application/*+avro
output:
destination: topic2
content-type: application/*+avro
我可以有更多的输入和输出吗?
我可以为每个流使用不同的序列化类吗?
producer-properties:
key.serializer: io.confluent.kafka.serializers.KafkaAvroSerializer
value.serializer: io.confluent.kafka.serializers.KafkaAvroSerializer
是,只需添加新的绑定:
bindings:
input:
destination: topic1
content-type: application/*+avro
inputStream1:
destination: topic_input_1
inputStream2:
destination: topic_input_2
output:
destination: topic2
content-type: application/*+avro
output2:
destination: output_topic_2
并提供EnableBinding和其他额外的注释,如StreamListener:
@EnableBinding(MultipleDesBinding.class)
public class YourApplication {
@StreamListener
@SendTo("output")
public KStream<String, String> topology1(@Input("inputStream") KStream<String, String> inputKStream,
@Input("inputStream1") KStream<String, String> inputStream1KStream) {
}
@StreamListener
@SendTo("output2")
public KStream<String, Long> topology2(@Input("inputStream2") KStream<String, String> inputStream2KStream) {
}
}
interface MultipleDesBinding {
@Input("input")
KStream<?, ?> input();
@Input("inputStream1")
KStream<?, ?> inputStream1();
@Input("inputStream2")
KStream<?, ?> inputStream2();
@Output("output")
KStream<?, ?> output();
@Output("output2")
KStream<?, ?> output2();
}
您可以在文档中详细查看:Imperative programming model。