设计基于Spring的kafka监听器/生成器

时间:2018-06-07 02:00:36

标签: java oop spring-boot apache-kafka

我必须编写多个听众,这些听众都会听取不同的主题。一旦他们收到消息,他们将应用他们的特定业务逻辑,然后他们将结果发布到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类来发布消息。

你们有什么建议。

0 个答案:

没有答案