[Seasar-user:19981] Re: [S2Chronos] タスクインスタンスの動的追加

Junichi Kato [E-MAIL ADDRESS DELETED]
2010年 7月 17日 (土) 07:14:57 JST


瀧口様
加藤です。

回答が遅れてすみません。


> 1. 監視対象は動的に追加されます。
> 2. 監視に関する処理はどれも同じなので、単一のTaskクラスで実装可能です。
> 3. それぞれの監視対象に関する処理は並列で動作させます。
> 4. サーバへの負荷を軽減させるため、開始時間を分散させます。

1は、スケジューラの稼働中にタスクを新規に登録するには、S2のコンポーネントでかつ、@TaskでautoScheduleをfalseにした状態にしておき、addTask(Hoge.class)すれば実現可能です。
S2Chronosのタスククラス(コンポーネント)はシングルトンを想定しているので、コンポーネントのクラスを渡すことになります。

2.については、S2Chronos側で制限する仕様はありません。Taskの実装次第です。

3.については、並列処理はタスクのクラスに@CloneTaskで並列処理を簡単に実行できますが、自分でスレッドを起こされても可能です。

4.については、タスクに対してはトリガーで実行時間を指定するだけです。開始時間を制御したければそこで工夫するしかありません。タスクは実行中は同じタスクを2重起動させることはできません。

あまり、柔軟なことはできないので、Taskクラスから先の実装で工夫されたほうがよいと思います。

簡単ですが、よろしくお願いいたします。

2010年7月11日13:54  <[E-MAIL ADDRESS DELETED]>:
> お世話になっております。瀧口と申します。
>
> S2Chronosを利用させていただいて運用管理系のシステムを作成しています。
>
> S2Chronosを使って以下を実現したいのですが、その方法が思つきません。
> アドバイスしていただけないでしょうか?
>
> 監視システムのようなものと仮定します。
>
> 1. 監視対象は動的に追加されます。
> 2. 監視に関する処理はどれも同じなので、単一のTaskクラスで実装可能です。
> 3. それぞれの監視対象に関する処理は並列で動作させます。
> 4. サーバへの負荷を軽減させるため、開始時間を分散させます。
>
> 監視対象を追加する処理の中で
> Schedulerに対してaddTaskして監視タスクを追加するイメージでいました。
>
> public Scheduler scheduler
>
> pubilc void addTarget(Target target) {
> //省略
> WatchTask watchTask = WatchTask.newTask(target);
> sheduler.addTask(watchTask);
> }
>
> しかしながら、addTaskの引数はClassなので
> そもそも思想が違うのだな。と思っています。
>
> このような場合、どういった実装が考えられますでしょうか?
>
> 以上、よろしくお願いたします。
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>



-- 
/**
 * name  : Junichi Kato
 * email : [E-MAIL ADDRESS DELETED]
 *
 * blog  : http://d.hatena.ne.jp/j5ik2o/
 *
 * commiting projects :
 * http://jiemamy.org/
 * http://s2chronos.sandbox.seasar.org/
 * http://s2config.sandbox.seasar.org/
 */


Seasar-user メーリングリストの案内