是否可以使用相同的绑定通过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());
第二个是kafka streams:
@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
如果它们都具有相同的目的地并且都是输出,是否真的有必要将它们分开?
答案 0 :(得分:1)
是的,这是必要的;绑定由两种不同的活页夹实现-和不同的kafka客户端处理。