問題タブ [advanced-queuing]

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 に答える
892 参照

java - Oracle AQ Java インタフェースとカスタム メッセージ タイプ

AQ に Oracle Java インターフェイスを使用しており、メッセージをデキューしたいと考えています。これらのメッセージは、次の 2 つのフィールドで構成されています。

  • 一意の行 ID。
  • 一意でない ID。

次のような単一の RAW ペイロードを使用して、メッセージを正常にデコードしました。

sthを読んだことを覚えています。Java インターフェイスではカスタム型がサポートされていないことを示しています。そうですか?コレスポンデントAQQueueTablePropertyコールはどのようになりますか、または SQL でキューとキュー テーブルを作成する必要がありますか? 通常の JDBC 操作を使用して、デキュー操作の結果を Java 表現にマップすることはできませんResultSetか?

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

sql-server - SQL Server には、Oracle Streams Advanced Queuing と同様の機能がありますか?

Oracle Streams AQ (Advanced Queuing) は、スケーラビリティの高いデータベース ベースのキューイング機能を提供します。SQL Server (任意のバージョン) に同等の機能はありますか?

注: テーブルを単にキューとして使用するという意味ではなく、ベンダーが提供するデータベース プラットフォームに対する特定の拡張機能です。

0 投票する
2 に答える
2703 参照

oracle - Oracle Advanced Queuingでの無関係なメッセージの選択的デキュー

この質問は、 Oracle Streams Advanced Queuingでのメッセージのデキューに関するものです。

相互に関連するメッセージが順次処理されるようにする必要があります。

たとえば、トランザクション参照 (txn_ref) と呼ばれるビジネス関連フィールドを持つ 4 つのメッセージがキューにシードされており、そのうちの 2 つのメッセージ (1,3) が同じトランザクション (000001) に属しているとします。

また、このキューからデキューしたい 4 つのスレッド/プロセスを実行しているとします。以下が発生するはずです。

  1. スレッド 1 がメッセージ #1 をデキューします
  2. スレッド 2 はメッセージ #2​​ をデキューします
  3. スレッド 3 はメッセージ #4 をデキューします (メッセージ #3 は #1 に関連しており、#1 がまだ完了していないため)。
  4. メッセージを待っているスレッド 4 ブロック
  5. スレッド 1 はメッセージ #1 の作業をコミットします
  6. スレッド 4 (またはおそらくスレッド 1) がメッセージ #3 をデキューします。

私の最初の考えは、ENQ_TIME (エンキュー時間) が同じ TXN_REF を持つすべてのメッセージの他の ENQ_TIME よりも遅くないデキュー条件でこれを達成できるということでした。しかし、私の問題は、まだ選択していないメッセージの TXN_REF を参照して選択する方法です。例えば

ここで私が望むものを達成することは可能ですか?

0 投票する
2 に答える
1081 参照

oracle - Oracle AQ のリキュー

ユニバーサル pl/sql を書き込んで、既にキューに入れられているメッセージを (再) キューに入れようとしています (どのような状態でもキュー テーブルに存在します)。

キューでデキューが有効になっている場合は正常に機能するため、最初にブラウズ モードでデキューしてDBMS_AQ.message_properties_t、既存のメッセージからデータを入力して読み込むことができます。しかし、デキューが無効になっている場合、どうすればそれらを取得できますか?

ありがとう

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

database - デキューの進行中にセッションが強制終了された後、Oracle AQ メッセージが失われました

Oracle 11g R2 Windows 2008 R2 データベースで DBMS_AQ.deQueue に問題があります。セッションがデキューを実行し、その後 (コミットまたはロールバックの前に) セッションが強制終了されると、特定のメッセージがキューから完全に削除されます。まだキューにあるか、少なくとも例外キューにあると思います。次の手順を実行してテストします。

  1. セッション 1 からエンキューし、コミットします。(以下のコードを参照)
  2. セッション 2 からデキューします (以下のコードを参照)。
  3. セッション 1: MY_Q_T から * を選択 -> 私のメッセージはまだここに表示されています。
  4. セッション 2: MY_Q_T から * を選択 -> メッセージが表示されなくなりました。
  5. セッション 2 (デキュー) セッションを終了します。
  6. セッション 1: MY_Q_T から * を選択 -> メッセージが表示されなくなりました。メッセージが失われます。

これはバグですか?デキュー (/visibility) は自律的に設定されていないため、セッション 2 が強制終了されたときに、メッセージがまだキューにあると予想されます。回避策のアイデアはありますか?

エンキューとデキューに使用されるコード:

エンキュー:

デキュー:

0 投票する
2 に答える
6523 参照

sql - Oracle SQLクエリは1つのプロセスでのみ失敗します:「ORA-01405:フェッチされた列の値がNULLです」

作成した「プラグイン」でシステムストアドプロシージャを呼び出そうとしています。プラグインをテストアプリケーションでテストすると、正常に動作します。構築しているターゲットアプリでプラグインを実行すると、Oracleから意味のない例外が発生します。

Oracleサーバー11.2.0.1.0とODP.NET2.112.2.0を使用しています。

これが私のテストアプリからのODP.NETからのデバッグトレースです:

そして、ターゲットアプリで実行されている同じコードからのODP.NETからのデバッグトレースは次のとおりです。

テスト/ターゲットアプリケーション間で何が異なる可能性があるかについて、私は途方に暮れています。両方のプロセスは、ローカルのAdministratorsグループのメンバーとして実行されています。どちらも同じ接続文字列を使用しています。どちらも同じ.NETコードを実行していますが、データベースサーバーとは結果が異なります。ここで何が起こっているのでしょうか?

0 投票する
2 に答える
509 参照

oracle - OracleAdvancedQueuingの10gデータベースに対してOracle11gClientを使用することをお勧めしますか?

C#、NServiceBus、Oracle 10g(クライアントとサーバー)などを使用して、クライアント用の統合ソフトウェアを開発しています。要件は、メッセージのキューイングメカニズムであるITransportの実装を作成するために、NServiceBusの新しいプラグインを開発する必要があることです。そのため、これにはOracleAdvancedQueuingが使用されます。Oracle 11g(クライアントとサーバー)で高度なキューイング用のコードを作成する作業はかなり行っていますが、ODP.Net 10gを見ると、キューイングのサポートが不足しているか存在しないため、問題が発生する可能性があります。

私の質問はこれです:

11gクライアントを10gデータベースサーバーに対して使用できることは知っていますが、Oracle Advanced Queuingにとっては良い考えであり、知っておく必要のある落とし穴はありますか?

どうもありがとう。

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

c# - C#を使用してOracle8iからメッセージキューをリッスンする方法

メッセージキュー用のOracleODAPをインストールすることにより、C#でOracle11gを使用してメッセージキューAPIを使用できました。Oracle8i上に構築された古いシステムのアップグレードプロジェクトがあります。基本的に既存のシステムを変更することはできないので、テーブル挿入トリガーを介してメッセージキューイベントを追加することを考えていました。しかし、C#でそのメッセージキューをリッスンする方法があるかどうか疑問に思っています。

現在のオラクルのWebサイトでは、オラクル8i用のODACは提供されていません。しかし、私は彼らがこれを行うためのサポートまたはハックを持っているかどうか疑問に思っていますか?

これに代わる方法は、テーブルを監視するために1秒ごとにポーリングを実行することです。どう思いますか?

注:JavaはJMSを介してこれを実行できることを読みましたが、要件はC#で使用するためのものです。 ここを参照してください

0 投票する
2 に答える
6204 参照

java - MessageListener が Oracle Queue のメッセージをリッスンしていない

Oracle Advanced Queue を実装しました。リスナー プログラムを作成しています。以下は私のサンプルです:

}

このプログラムは、Oracle キュー内のメッセージを実行およびリッスンし続けるスタンドアロン プログラムであることに注意してください。

残念ながら、このクラス ファイルの jar を作成して実行すると、実行されて終了し、キュー内のメッセージが 1 つだけ消費されます。リスナーが実行され続けず、キューをリッスンしないのはなぜですか?

リッスンし続け、キュー内のすべてのメッセージを取得してから、永遠にリッスン モードのままになると思っていましたが、そのようには動作しません。

誰かが何がうまくいかないのか教えてくれれば感謝します。

ありがとう

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

database - アプリがオフラインのときにエンキューされたメッセージをデキューする方法 (Oracle Advanced Queue)

2つ質問があります。以下はシナリオです -

プロセス A とプロセス B の 2 つの異なるプロセスがあります。プロセス A は、メッセージをメッセージ キューにエンキューします。プロセス B は、メッセージ キューからメッセージをデキューします。

1) プロセス B はしばらくシャットダウンしますが、プロセス A はメッセージをキューに入れ続けます。プロセス B がライブに戻ったとき、プロセス B がオフラインだったときにプロセス A によってポストされたメッセージ キュー内のメッセージをデキューする方法は?

2) メッセージをデキューするには複数のプロセス B が必要なため、使用しているキューは複数のコンシューマ キューです。設計の背後にある理由は、プロセス B の 1 つが停止した場合でも、他のプロセス B が引き続きメッセージを処理できるためです。同時に、プロセス B の 1 つのインスタンスがメッセージを取得した場合、そのメッセージを処理しないように他のプロセス B に通知する必要があります。

サンプルが見つかりませんでした。どんな助けでも大歓迎です。