🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

1022閲覧

3つのバッチを同時に起動しないよう制御するシステムをつくりたい

waka_b

総合スコア5

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2019/10/17 13:06

前提・実現したいこと

Java初心者です。
前提として、
・3つのバッチがあります
・それぞれ7:00〜9:00、11:00〜13:00、18:00〜21:00のあいだ30分ごとに起動し、処理を行います。
・各バッチは基本的に時間内に終わりますが、過去何回か大きく後ろにずれたことがあります。
以上です。

これらに対して同時に起動しないように制御するシステムを作りたいです。

発生している問題

外部ライブラリを使ってcronのようにスケジュール管理をしたいのですが、バッチを起動する際開始直後の最初の1回だけ行いたい処理があります。
ですがcronらしく設定する以上、繰り返し行われてしまうので手こずっています。

試したこと

Timerクラスを使おうと試みましたが○時〜○時の設定方法が難しく断念しております。

補足情報(FW/ツールのバージョンなど)

eclipse

コードが書けずすみませんが、どうかよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/10/17 13:12

cronそのものを使うのでは何がまずいのでしょうか?
waka_b

2019/10/17 13:15

見てくださってありがとうございます。 cronそのものでスケジュール設定だけ行うと、バッチの処理が遅延したり同時起動したりが分からないため、それらが分かったら通知できるように制御システムを作りたいと思っています。
takasima20

2019/10/17 13:34

同じバッチが複数起動するのがまずいのか、別のバッチでもまずいのか。待つのはいいけど、どれくらいまで許容できるのか。制御の仕掛けで判断できない場合はどうするか。など、具体的な方針を整理した方が回答しやすいと思います。
otn

2019/10/17 13:36

同時起動は、起動されたプログラム内で制御すればいいし、遅延は遅延を検知したい時点でcronから遅延チェックプログラムを起動すればいい。 起動するプログラムに手を入れることができないことが前提ですか?
waka_b

2019/10/17 13:37

見てくださってありがとうございます! ・同じバッチの複数起動も防ぎたいです。 ・別のバッチ同士の同時起動も防ぎたいです。 ・外部設定ファイルで変更できたら素敵ですが、とりあえずは10分待ち、それ以降は待たずにエラーですと通知が行くようにしたいです。 現段階で考えているのはこの程度です…。
guest

回答1

0

ベストアンサー

下のどっちかと。

  1. ジョブ管理システムで3つのバッチ処理の起動条件を書いて起動させる
  2. 各バッチ処理で終了した目印をどこか(ファイル、DBetc)に残して、各バッチ起動時に目印が有ったら無かったら待つ

複雑な条件でしたら1の方が取り回しが楽です。

投稿2019/10/17 13:22

編集2019/10/17 13:48
oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

waka_b

2019/10/17 13:38

回答ありがとうございます! ジョブ管理システムについては初めて知りました。調べてみます!
waka_b

2019/10/17 13:58

追加の編集もありがとうございます。 なるほど、開発時は1の方を参考にしたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問