连续运行Java程序的标准方法

时间:2018-04-26 08:06:58

标签: java architecture apache-kafka

保持Java程序持续运行的标准(行业标准)方法是什么。

用例(实时处理):

  • 连续跑的Kafka制片人
  • 持续运行的Kafka消费者
  • 处理对象流的连续运行服务

在Stackoverflow中发现了一些问题,例如: https://stackoverflow.com/a/29930409/2653389

但我的问题是针对达到此目的的行业标准

2 个答案:

答案 0 :(得分:2)

首先,没有指定的标准。

可能的选择:

  • Java EE WEB应用程序
  • Spring WEB应用程序
  • 使用Spring-kafka('com.jakewharton:butterknife:8.8.1'
  • 的应用程序

Kafka制作人可能会接受一些命令。在现实生活中,我使用的应用程序与听众一起持续运行,接收他们触发了一些工作,批量等的请求。

可以使用,例如:

来实现
  • 接受HTTP请求的Web服务器
  • 使用@KafkaListener
  • 的独立Spring应用程序

消费者可以是@KafkaListener的弹簧应用程序。

@KafkaListener

默认情况下,@KafkaListener(topics = "${some.topic}") public void accept(Message message) { // process } 的Spring应用程序将无限运行。为@KafkaListener注释创建的侦听器容器是使用类型为@KafkaListener的基础结构bean注册的。这个bean管理容器'生命周期;它会自动启动KafkaListenerEndpointRegistry设置为autoStartup的所有容器。 true使用KafkaMessageListenerContainer执行主TaskExecutor循环。

Documentation了解更多信息。

如果您决定不使用任何框架和应用程序服务器,可能的解决方案是在单独的线程中创建侦听器:

KafkaConsumer

答案 1 :(得分:1)

当您启动程序时,如#34; java jar"它会起作用,直到你没有阻止它。但这对于简单的个人使用和代码测试来说是可以的。 另外在UNIX系统中存在名为" screen"的应用程序,你可以运行java jar作为守护进程。

行业标准是应用服务器。从简单的Jetty到企业WebSphere或Wildfly(例如JBoss)。应用程序服务器允许您连续运行应用程序,如果需要,可以与前端进行通信等。