2010-11-24 13 views
0

Oracle AQを初めて使用しました。複数のコンシューマ・キューからどのメッセージが消費されたかをOracle AQに通知する方法

私はそうのようなテーブルとキューを作成しました:

EXEC dbms_aqadm.create_queue_table(queue_table=>'MY_QUEUE_TABLE', 
            queue_payload_type=>'sys.aq$_jms_text_message', 
            multiple_consumers=>TRUE); 

EXEC dbms_aqadm.create_queue(queue_name=>'CONTACT_INFO_QUEUE', 
          queue_table=>'MY_QUEUE_TABLE', 
          max_retries=>24, 
          retry_delay=>60, 
          retention_time=>3600); 

その後、私はJavaでのキューにリスナーを書きました。リスナーを起動すると、6分待ってからキューからすべてのメッセージを収集します。

しかし、どのメッセージが消費されたのかをMY_QUEUE_TABLEに伝えることはできません。複数のコンシューマキューが必要なので、メッセージが詰まっているはずです。ただし、Oracle AQでは、各リスナーが消費したメッセージをどのように追跡していますか。

答えて

1

各キューは追跡し、すべてのコンシューマがデキューしたことを確認します。実際のキュー表を見れば、メッセージを消費した消費者の数を知ることができます。 aq $ _my_queue_tableおよびaq $ _my_queue_table_Iを調べて、メッセージの状態を確認してください。

関連する問題