1

我有一个 Java 工作者,它通过 Web 服务调用轮询外部队列系统的作业。

确保工人在任何给定时间都在工作的最可靠方法是什么?

4

2 回答 2

1

JVM 执行与任何其他程序没有什么不同。因此,您要做的是将shell 脚本放在一起并将其放在/etc/init.d 中并将其适当地链接到/etc/rc.d。在 RedHat 风格上,它将确保服务随系统一起启动。

编写脚本可能很棘手,但我会复制现有脚本之一并将其更改为调用具有正确参数的 java 可执行文件。在此脚本中,您必须捕获 java 进程 ID。然后,您可以使用它来监控您的进程并根据需要重新启动。

于 2011-06-04T16:38:28.320 回答
0

java.util.concurrent软件包为此类工作提供了一个简单、可靠的框架。

这是一些可行的代码的简单示例:

import java.util.concurrent.*;

public static void main(String[] args)
{
    ScheduledExecutorService service = Executors.newScheduledThreadPool(1);

    // Here's an anonymous class, but your should probably create a class for this
    Runnable poll = new Runnable()
    {
        public void run()
        {
            // put your polling code here
        }
    };

    // Have your code called every 5 seconds like this:
    service.scheduleAtFixedRate(poll, 0, 5, TimeUnit.SECONDS);
}
于 2011-06-04T14:50:18.367 回答