問題
当社の liferay システムは、他の Web アプリケーションとデータを同期するための基盤です。
そしてModel Listeners
、その目的のために使用します。
リスナーを介した Web サービスの呼び出しとデータベースの更新が多数あるため、liferay の特定のアクションが遅すぎます。
例: liferay に を
追加User
する場合、多くの Web サービス呼び出しを起動して、ユーザーの詳細を追加し、他のシステムをユーザーデータで更新し、いくつかの liferay カスタム テーブルも更新する必要があります。そのため、ユーザーの追加に時間がかかり、まれにリクエストがタイムアウトになることがあります。
のコードUserListener
はユーザーの詳細のみに依存し、例外があったとしてもUserListener
ユーザーは Liferay に追加されるため、次の解決策を考えました。
また、リスナーでコードを実行中に例外が発生した場合に問題を修正する、liferay のスケジューラーもあります。
提案された解決策
UserListener
Concurrency API を使用してコードを非同期にすることを考えました。
だからここに私の質問があります:
- モデル リスナーに並行コードを含めることは推奨されますか?
- はいの場合、トランザクションやその他のものなど、このコードを介して Liferay カスタム テーブルも更新すると、悪影響がありますか?
- このアプローチの他の一般的な長所と短所は何ですか?
- ユーザー エクスペリエンスを妨げることなく、他のシステムをリアルタイムで更新できる、他に良い方法はありますか?
この件についてご協力いただきありがとうございます