单个微服务中可能有多个流吗?

问题描述 投票:0回答:1

单个微服务中可能有多个流吗?

这是我的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
spring apache-kafka apache-kafka-streams spring-cloud-stream
1个回答
2
投票

是,只需添加新的绑定:

      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

© www.soinside.com 2019 - 2024. All rights reserved.