私はする必要があります
- データベース テーブルを読み取る
- データを処理する (dataCleanser)
スループットを向上させるために、5 分 (10 個) ごとに起動し、上記の作業を行う EJB タイマー (非永続) を実装しました。
問題は「バック プレッシャー」です。dataCleanser は 12 分ほどかかる場合があり (外部 API 呼び出しを行います)、これが発生すると、Websphere はハング スレッドを報告します。
そのような場合、プログラムでタイマーの数を (たとえば 10 から 5 に) 減らしたいと思います。タイマーが戻ってきて、実行の成功、例外、またはタイムアウトのステータスを報告する場合にのみ、それを行うことができます
そうすれば、背圧を制御できます。
is there anyway to do that in Websphere 8?
別の方法で質問するには
- can the EJB timers(with transaction_not_supported) invoke another EJB that have transaction timeouts?
- can those timeouts be caught in the calling timer code?
それが不可能な場合、単純な古い無限ループをスリープ状態で使用してから呼び出して EJB (次に dataCleanser を呼び出す) をトランザクション タイムアウトで使用することの欠点は何ですか?
欠点の 1 つは、これがシングル スレッドになり、タイマーのように 10 個の並列実行を行う方法がわからないことです。