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

连续运行Java程序的标准方法,java,architecture,apache-kafka,Java,Architecture,Apache Kafka,保持Java程序连续运行的标准(行业标准)方法是什么 用例(实时处理): 连续运行的卡夫卡制作人 连续运行的卡夫卡消费者 处理对象流的连续运行服务 在Stackoverflow中发现一些问题,例如: 但是我的问题是关于实现这一点的行业标准是什么?当你像“javajar”一样启动你的程序时,它会一直工作直到你没有停止它。但这对于简单的个人使用和代码测试来说是可以的。 在UNIX系统中还存在一个名为“screen”的应用程序,您可以将JavaJAR作为守护进程运行 行业标准是应用服务器。从简单

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

用例(实时处理):

  • 连续运行的卡夫卡制作人
  • 连续运行的卡夫卡消费者
  • 处理对象流的连续运行服务
在Stackoverflow中发现一些问题,例如:


但是我的问题是关于实现这一点的行业标准是什么?当你像“javajar”一样启动你的程序时,它会一直工作直到你没有停止它。但这对于简单的个人使用和代码测试来说是可以的。 在UNIX系统中还存在一个名为“screen”的应用程序,您可以将JavaJAR作为守护进程运行


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

当您像“java jar”一样启动程序时,它将一直工作,直到您没有停止它为止。但这对于简单的个人使用和代码测试来说是可以的。 在UNIX系统中还存在一个名为“screen”的应用程序,您可以将JavaJAR作为守护进程运行


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

首先,没有指定的标准

可能的选择:

  • JavaEEWeb应用程序
  • SpringWeb应用程序
  • 使用Spring kafka的应用程序(
    @KafkaListener
卡夫卡制作人可能会接受一些命令。在现实场景中,我使用的应用程序不断地与监听器一起运行,接收它们触发的一些作业、批处理等请求

例如,可通过以下方式实现:

  • 接受HTTP请求的Web服务器
  • 带有
    @KafkaListener
消费者可以是带有
@KafkaListener
的spring应用程序

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

了解更多信息

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

public class ConsumerListener implements Runnable {

    private final Consumer<String, String> consumer = new KafkaConsumer<>(properties);

    @Override
    public void run() {
        try {
            consumer.subscribe(topics);

            while (true) {
                    // consume
                }
            }
        } finally {
            consumer.close();
        }
    }
}
公共类ConsumerListener实现可运行{
私人最终消费者=新卡夫卡消费者(房产);
@凌驾
公开募捐{
试一试{
消费者。订阅(主题);
while(true){
//消耗
}
}
}最后{
consumer.close();
}
}
}

首先,没有指定的标准

可能的选择:

  • JavaEEWeb应用程序
  • SpringWeb应用程序
  • 使用Spring kafka的应用程序(
    @KafkaListener
卡夫卡制作人可能会接受一些命令。在现实场景中,我使用的应用程序不断地与监听器一起运行,接收它们触发的一些作业、批处理等请求

例如,可通过以下方式实现:

  • 接受HTTP请求的Web服务器
  • 带有
    @KafkaListener
消费者可以是带有
@KafkaListener
的spring应用程序

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

了解更多信息

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

public class ConsumerListener implements Runnable {

    private final Consumer<String, String> consumer = new KafkaConsumer<>(properties);

    @Override
    public void run() {
        try {
            consumer.subscribe(topics);

            while (true) {
                    // consume
                }
            }
        } finally {
            consumer.close();
        }
    }
}
公共类ConsumerListener实现可运行{
私人最终消费者=新卡夫卡消费者(房产);
@凌驾
公开募捐{
试一试{
消费者。订阅(主题);
while(true){
//消耗
}
}
}最后{
consumer.close();
}
}
}

没有行业标准。可能有几种经过验证的解决方案/设计模式,但这在很大程度上取决于特定的用例,最好的是什么。我分享了一些用例,特别是处理实时数据流的用例,没有行业标准。可能有几种经验证的解决方案/设计模式,但这在很大程度上取决于特定的用例,最好的是什么。我分享了一些用例,特别是处理实时数据流。是的,我可以在App server上托管服务,但对于按需处理非常有用。我正在寻找一个实时处理的解决方案。使用特定用例编辑问题。EE标准是应用程序服务器,几乎所有EE以外的人现在都会部署一个运行
java-jar
internally@Pintu您的测试用例不是关于运行应用程序,而是关于模式。看看发布/订阅模式,p