問題タブ [oracle-aq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2079 参照

oracle - dbms_aq.dequeue_array、最初のメッセージが 2 回返される

序章

Oracle Advanced Queuing メソッドを使用すると、Oracle SQL Server (正確には、Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production) で非常に奇妙な動作に直面しています。

問題

エラーは、X個のメッセージをキューに入れたことですが、dequeue_array はX+1個のメッセージを返し、最初のメッセージが重複しています (MessageId で確認できます)。

再現:

エラーを再現するための簡単な PoC を書くことができました。このコードは非常に単純です。エンキュー/デキューは標準の Oracle AQ です。このコードは、次の手順を 2 回実行します (テスト実行)。

  • キュー テーブルをパージする
  • X メッセージをキューに入れる
  • dbms_aq.dequeue_array 呼び出しを使用してすべてのメッセージをデキューします
  • デキューされたメッセージの数を確認する

新しい接続で POC を実行すると、最初の実行はエラーなしで成功しますが、その後の実行はすべて失敗します。その後、同じ接続を使用すると、スクリプトを実行するたびに、両方のテスト実行で失敗します。

私がこれまでに試したこと:

  • 「新しい」接続でこのスクリプトを実行する: 最初の実行のみが失敗する
  • 同じ接続でのスクリプトの追加実行: すべての実行が失敗する
  • 新しいキューを使用/作成する場合: 最初の実行のみが失敗する
  • dbms_aqadm.purge_queue_table() の代わりに「delete from <queue_table>」を使用する場合: すべて問題ありません
  • 「通常の」1 つずつデキューを使用する場合: すべて問題ありませ

結論:

この動作を説明することも、コードにエラーを見つけることもできません。ご覧ください。お気に入りの SQL クライアントで直接実行できるはずです (PL/SQL Developer でテスト済み)。

さらに詳しい情報が必要な場合や、PoC を機能させるのに問題がある場合は、質問してください。このスレッドを定期的にチェックします。何が起こっているかについての詳細な出力を含め、PoC をできるだけ読みやすいものにしようとしました。

コード:

出力例:

0 投票する
1 に答える
129 参照

oracle-aq - Oracle AQ によるリクエスト/リプライ

Oracle AQ を使用して、要求と応答のパターンを実装したいと考えています。基本的に「リクエスタ」は次のようになります。

  1. 要求メッセージをキューに入れます。
  2. 要求メッセージ用に生成されたメッセージ ID を取得します。
  3. 応答メッセージをデキューし、デキュー オプション相関プロパティを元の要求メッセージのメッセージ ID として指定します。

DBMS_AQ.ENQUEUE プロシージャでは、元のメッセージ ID を返す msgid OUT パラメータがRAWであるのに対し、デキュー オプションの相関プロパティはVARCHAR2(128)であることがわかります。

それを実装する正しい方法は何ですか?

0 投票する
1 に答える
488 参照

oracle - Oracle OSB プロキシ サービス エラー

Oracle AQ を使用して作成されたキューを使用して、プロキシ サービスを使用する jms を作成しました。また、プロキシ サービスは、同じメッセージを orace AQ を使用して作成された別のキューにエンキューするビジネス サービスにルーティングされます。プロキシ サービスは正常に実行されており、メッセージは宛先キューに入れられますが、以下のようなエラー メッセージがスローされます。

エンドポイント プロキシ サービスの着信メッセージの処理中に予期しないエラーが発生しました

エラーが原因で、サービスが再試行され、メッセージが宛先キューに 16 回投稿されたと思います。

これを解決するのを手伝ってください。

ありがとう。

0 投票する
0 に答える
107 参照

oracle11g - 一部の MQ クライアントに対する Oracle データベースの変更

こんにちは Oracle DB の皆さん、データベースの DML 変更を MQ サーバー (私の場合は Kafka) に伝達する方法はありますか。以下について読みましたが、具体的な実装が見つかりませんでした

Oracle ストリーム:- データベースからデータベースへのレプリケーション用です。

oracle strams AQ:- MQ クライアントとの統合用

GoldenGate: コストがかかるため使用できません