非同期メッセージが完了するのを待つためにPeopleSoftアプリケーションエンジンを待つことができますか?

StackOverflow https://stackoverflow.com//questions/22022400

質問

私はPeopleSoftを介してメッセージを公開しようとしているデータアップロードをアプリケーションエンジンで非同期的に公開しようとしています。ポイント全体は複数のメッセージを送信してそれらを同じノードに消費することができることです。メッセージを送信する前に、アップロードファイルにすべてのフィールド値を格納するために、テーブル(T1)上のデータを保存しています。

消費中のメッセージをコンポーネントインタフェースに公開しようとしており、例外は同じテーブルT1に記録されています。テーブルフィールドにフラグを立てている各トランザクションに対して言ってみましょう(prosisted_flag= 'y')。

私はすべての非同期メッセージが完了するのを待つことができるメカニズムが必要です。 t1テーブルの上に行がある場合はT1テーブルをチェックすることを考えています。すべてのメッセージが処理されていないが、寝ているままにしており、アプリケーションエンジンを完了させないでください。

私が得ることができる唯一の利益は、一度に複数のインスタンスを待つ必要がありますか、同期呼び出しをする必要はありません。アイデア全体は、(100人 - >トランザクションで使用されていたかのように)異なるトランザクションによってコンポーネントを使用することです。

これら100のトランザクションが完了していない限り、T1 TableがONとOFFのレコードを保持していることを確認します。何か問題がある場合は、CIによってキャッチされた例外を記録できます。

このアプローチに関するコメントはすべて理解されます。事前にありがとう!

役に立ちましたか?

解決

私たちは別のアプローチを取ります。 App Engineが完了する前にそれらのテーブルのデータを検証できるようにしても、メッセージを非同期的に送信するというアイデア全体は無駄です。その場合、同期メッセージを使用することはより良くなり、プロセスを並行して実行します。

だから、我々は、アプリケーションエンジンにメッセージを通してすべてのデータのチャンクを完了して公開し、同じノードで完全に消費されていることを確認することを決定しました。

  1. メッセージを消費し続けているときに、処理された/成功した行全体のテーブルT1を更新し、必要に応じてそれらを使用します。

  2. 私達は公開され消費されたすべての行の監査またはカウンタを保持します。同じコンポーネントを複数のトランザクションにさらすことは、巨大なパフォーマンスへの影響です。 50人のユーザーが(もちろん異なるインスタンスの)CIを使用してコンポーネントの背後にある同じテーブルを更新していることを示すように、それがより良い機能を実行したいと思います。私は概念の証明を完了し、うまくいけば、プロセスを並行して実行するよりもはるかに優れています。

  3. 私はこれがこれらのアップロードの問題を扱っている人がどのようなものに役立つことを願っています。ありがとう!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top