Webサービス呼び出しを介して外部キューシステムのジョブをポーリングしているJavaワーカーがいます。
労働者がいつでも活動していることを確認するための最も確実な方法は何ですか?
Webサービス呼び出しを介して外部キューシステムのジョブをポーリングしているJavaワーカーがいます。
労働者がいつでも活動していることを確認するための最も確実な方法は何ですか?
JVMの実行は、他のプログラムと同じです。したがって、シェルスクリプトをまとめて、/ etc / init.dに配置し、適切に/etc/rc.dにリンクする必要があります。RedHatフレーバーでは、システムでのサービスの起動が保証されます。
スクリプトを作成するのは難しいかもしれませんが、既存のスクリプトの1つをコピーして、適切なパラメーターを使用してJava実行可能ファイルを呼び出すように変更します。このスクリプトでは、JavaプロセスIDをキャプチャする必要があります。その後、それを使用してプロセスを監視し、必要に応じて再起動できます。
この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);
}