Spring 和 Kafka:对 Kafka Producer 和 Kafka Streams 使用相同的绑定


是否可以

使用相同的绑定通过 Kafka Producer 生成消息和发送 Kafka Streams 的流处理结果?

现在我将它们分开如下:

    @Output(TOPIC_X)
    MessageChannel xOutput();
    @Output(TOPIC_X_ONE)
    KStream<?,?> xOneOutput();

当生产者使用第一个时:

channels
.xOutput()
.send(MessageBuilder
      .withPayload(x)
      .setHeader(KafkaHeaders.MESSAGE_KEY, x.getId()).build());

第二个是卡夫卡流:

@StreamListener
@SendTo(TOPIC_X_ONE)
public KStream<?,?> process(@Input(INPUT_TOPIC) KStream<String,String> inputStream){
    //ommited for clarity
}

在application.yml中,我有:

spring.cloud.stream.bindings:
  topic-x:
    destination: mytopic
    producer:
      useNativeEncoding: true
  topic-x-one:
    destination: mytopic
    producer:
      useNativeEncoding: true

如果它们都具有相同的目的地并且都是输出,真的有必要将它们分开吗?

是的,这是必要的;绑定由两个不同的绑定器实现和一个不同的 kafka 客户端处理。

相关内容

  • 没有找到相关文章

最新更新