1

OracleAQは初めてです。

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

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は、各リスナーが消費したメッセージをどのように追跡しますか?

4

1 に答える 1

2

各キューは追跡し、すべてのコンシューマーがデキューされたことを確認します。実際のキューテーブルを見て、メッセージを消費したコンシューマーの数を確認できます。aq$_my_queue_tableとaq$_my_queue_table_Iをチェックして、メッセージのステータスを確認します。

于 2010-11-25T00:00:20.563 に答える