是否可以
使用相同的绑定通过 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 客户端处理。