2

非同期通信にOracleAdvancedQueuingテクノロジーを使用することを検討しています。私の目的は、同時プロセス実行(非同期PL / SQLプロシージャ呼び出し)に使用することです。

同時プロセス実行の現在のレガシー実装は、バックグラウンドモードでSSH接続を介してフロントエンドから開始しているUnix KornShell(ksh)スクリプトで構成されています。それは私たちにとってはうまくいきますが、私はその種の解決策に不満を持っています:

  • セキュリティ(フロントエンドはSSH接続を開始し、バックグラウンドモードでkshスクリプトを実行します。同僚から、この種のログインは当社で制限されることに気付きました。)
  • メンテナンス(私たちのチームの全員がkshスクリプトに精通しているわけではありません)
  • テクノロジーの多様性(ノウハウと移行の取り組みのために、テクノロジーの多様性を減らすようにしています)
  • ロギング(バックエンドシステムはデータベースログテーブルにログインし、同時実行は部分的にログファイルに記録されます)

kshからデータベースに移動することで、システムの全体的な品質を向上させることができます。

  • セキュリティ(SSH接続はもうありません。フロントエンドはデータベースにメッセージを送信し、データベースメッセージリスナーはメッセージに反応してプロシージャを非同期で実行します)
  • メンテナンス(使い慣れたPL / SQLを使用)
  • テクノロジーの多様性(次のOS移行では、データベースオブジェクトとデータのみを移行する必要があります)
  • ロギング(バックエンドロギングソリューションを完全に使用します)

私の考慮事項についてどう思いますか。また、Oracle AdvancedQueueingの経験について教えてください。特に安定性、パフォーマンス、メンテナンスにおいて?より良い選択肢はありますか?

4

2 に答える 2

2

あなたのプロジェクトの詳細は明らかにわかりませんが、非同期の PL/SQL プロシージャ コールが唯一の目的である場合は、DBMS_SCHEDULER を使用する方が簡単かもしれません。プログラムは、PL/SQL を呼び出すスケジューラを介して「今すぐ実行」するジョブを送信できます。私の意見では、スケジューラは AQ よりもはるかに簡単に操作できます。

于 2012-01-23T15:37:18.813 に答える
2

非同期キューを使用したフローの管理 Oracle には、次の利点と欠点があります。

利点

  1. さまざまなサブフローを管理するためにハンドラー (JOB EVENT または APPLY PROCESS) を作成するためのアドホック コードを作成するタイプ別にフローを管理する機能
  2. DEQUEUE Queue をクローズする全タイプのフローを簡単に出すことができます。
  3. INSERT TIME または PRIORITY (ペイロードの msg パラメータ) に対する MSG の優先順位 (Coda の作成におけるパラメータ) の管理 期限または経過時間によるメッセージの管理。
  4. パラダイムを EVENT NO POLLING のソリューションに合わせる

短所

  1. ビジネス ロジックの負荷はすべて DB にかかります。
  2. 新しい PKG をインストールするときは、キュー (キューイングと DEQUEUEING) を停止して、PKG を指す HANDLER を再起動する必要があります。
  3. 誤って処理された回復システム msg を実装する必要があります。

BL を Java に移行し、Logging を含む言語のさまざまな可能性を利用するために、tails ORACLE で CODE JMS (JMS プロバイダー) を使用するのが良い解決策だと思います。

于 2014-12-05T14:56:26.210 に答える