1

私はする必要があります

  • データベース テーブルを読み取る
  • データを処理する (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 個の並列実行を行う方法がわからないことです。

4

1 に答える 1