2012-03-12 7 views
0

私はQuartzとSpringを併用しています。私が使用しているJobStoreはRAMJobStoreです。クォーツスケジューラ - RAMJobStoreで同じIDを持つジョブを許可するようにQuartzを設定することはできますか?

同じIDを持つ2つのジョブを作成します(同じインスタンス定義(JobDetail)を持っています)。これらのジョブが並行して実行されないようにしたいので、ジョブクラスに@DisallowConcurrentExecutionというアノテーションを付けました。

私の問題は、私は仕事を追加しようとするので、私は例外を取得、RAMJobStoreは、店舗内の同じ時間で同じ識別を持つ複数のジョブを許可しないということである。

org.quartz.ObjectAlreadyExistsException: Unable to store Job : 
    'jobX', because one already exists with this identification. 

この問題をどのように克服することができますか?

ありがとうございます!

答えて

0

RAMJobStoreのソースコードから、同じキーを持つ2つのジョブがRAMJobStoreに同時に存在することはありません。

hereソースコードを見てください。

1

2つの異なるトリガーで実行されている2つの異なるジョブがある場合、2つのジョブが並行して実行されないようにするQuartzアノテーションは認識していません。各ジョブでSchedulerインスタンスを参照して、他のジョブが実行中かどうかを判断できます。その後、ジョブを一時停止または再スケジュールして、ジョブが並行して実行されないようにすることができます。

関連する問題