Мне нужно написать несколько слушателей, которые будут слушать разные темы.Как только они получат сообщение, они будут применять свою специфическую бизнес-логику, а затем они будут публиковать результат в TopicX
.
С другой стороны, как я об этом думал, это что-то вроде
@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);
}
Моя идея состояла в том, что я создам этот базовый класс и затем реализую конкретную бизнес-логику.Таким образом, я бы позаботился о избыточном коде получения / отправки сообщений, связанных с кафкой.
Учитывая, что каждая реализация будет иметь различную incoming.topicX
для прослушивания, я не уверен, как я могу реализовать ее надлежащим образом ООП.Некоторые способы, которыми я могу думать о
- Должен ли я оставить метод
listen
эксклюзивным для конкретных реализаций? - Вместо создания модели наследования.Я могу создать общий
sender
класс с kafkaTemplate
.Каждый класс businesslogic
будет иметь этот класс sender
для публикации сообщений.
Что вы, ребята, предлагаете.