我想构建一个单个弹簧启动应用程序,该应用程序同时执行多个不同的任务。我确实在互联网上进行了研究,但找不到任何出路。让我详细介绍。我想在某些时间间隔内每天开始工作一次。我可以使用Spring Quartz做。我也想在专用的Internet地址上收听消息。消息将来自Apache Kafka平台。因此,我想将KAFKA集成用于弹簧框架。它实际上是适用的(始终侦听消息并按时执行计划的作业(
从功能上讲,此设计很好:单个弹簧启动应用程序可以在同时执行石英作业时消耗KAFKA消息。
但更高的级别,您应该问为什么这两个功能属于一个应用程序。石英作业与正在消耗的Kafka消息之间是否存在一些固有的关系?您是否仅将它们组合起来仅限于一个应用程序并保存计算/内存资源?
您还应该考虑对可伸缩性的影响。如果您需要提高使用Kafka消息的速率怎么办?如果您扩展应用程序以获取更多的Kafka消费者,则必须担心多个应用程序现在要启动石英作业。
是的,可以做到,但是没有更多细节,听起来您应该将此设计分解为2个单独的应用程序:一个用于Quartz,一个用于Kafka消费。