Разработка структуры класса Spring на основе слушателя / продюсера кафки - PullRequest
0 голосов
/ 07 июня 2018

Мне нужно написать несколько слушателей, которые будут слушать разные темы.Как только они получат сообщение, они будут применять свою специфическую бизнес-логику, а затем они будут публиковать результат в 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 для публикации сообщений.

Что вы, ребята, предлагаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...