我必须编写多个听众,这些听众都会听取不同的主题。一旦他们收到消息,他们将应用他们的特定业务逻辑,然后他们将结果发布到TopicX
。
从oop的角度来看,我对它的看法就像是
@Service
public abstract class MessageGenerator {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
@Value("${app.topic.result}")
private String topic;
@KafkaListener(topics = "${app.kafka.incoming.topicOne}")
public void listen(@Payload String message) {
String msgToBePublished = applyBusinessLogic(message);
kafkaTemplate.send(topic, message);
}
public abstract String applyBusinessLogic(message);
}
我的想法是,我将创建此基类,然后实现特定的业务逻辑。通过这样做,我会注意一个冗余的kafka相关消息接收/发送代码。
鉴于每个实现都有不同的incoming.topicX
来监听,我不知道如何以适当的OOP方式实现它。我能想到的一些方法
listen
方法保留给特定的实现吗? sender
创建通用kafkaTemplate
类。每个businesslogic
类都会包含此sender
类来发布消息。你们有什么建议。