私は(私は、実際の仕事のコードを削除しました)次のジョブクラスを持っている:PlayFrameworkジョブが複数回実行されましたか?
@On("0 0 1 * * ?")
public class DailyJob extends Job
{
@Override
public void doJob() throws Exception
{
// I log from here
}
}
私のログは、(それだけで1日1回実行する必要がありながら、この仕事は、毎日複数回実行されることを私に伝えます01:00に)。今日は4回執行されました。このコードは、顧客のサーバー上のtomcatインスタンス上で実行されています。私は、サイトが複数のサーバー上で動作している可能性があると考えましたが、私はこれについて尋ねてきました。だから私は4が質問から外れると思うだろう。しかし、私は(静的オブジェクト上の)関数内でロックを行い、ロック/同期の内部で前の実行日(statc - System.currentTimeMillis())をチェックして設定します。そして10秒未満であれば、それは記録されるべきです。ただし、ジョブが同じ秒間に4回実行されたとしても、これは発生しません。だから私はそれが4つの異なる環境の下で実行されるかもしれないと思っています。
私はそれが演劇で動くかもしれないと思う1.2.2
何か考えですか?
おそらく愚かな質問ですが、ログが4回書き込まれていないことを確認しましたか? – emt14
:)プロダクションサーバーと同じ環境で動作するローカルコンピュータにこのサイトを設定しましたが、これは一度しかログに記録されません。私はまた、より多くのスレッドが同じものを扱っていることを示す、休止状態/永続例外を取得しています。 (私が理解できる限りは)(まあ、それは明らかにそれが100%同一であることはできませんが、多かれ少なかれ) – bendahmon
同じサーバー上で複数のインスタンスとして実行されていますか?私はより効率的なガーベジコレクションのためにヒープのサイズを小さく保つ前に、この手法を見てきました。 – Codemwnci