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