Как определить в Oracle AQ, какие сообщения были получены из очереди нескольких потребителей - PullRequest
1 голос
/ 25 ноября 2010

Я новичок в 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);

Затем я написал Listener в очередь на Java. Когда я запускаю Слушатель, он ждет 6 минут, а затем собирает все сообщения из очереди.

Но я не могу сказать в MY_QUEUE_TABLE, какие сообщения были использованы. Поскольку я хочу очередь с несколькими потребителями, я думаю, что сообщения должны оставаться рядом. Однако как Oracle AQ отслеживает, какие сообщения использовал каждый слушатель?

1 Ответ

2 голосов
/ 25 ноября 2010

Каждая очередь будет отслеживать и гарантировать, что все потребители отключены.Вы можете посмотреть на таблицу фактических очередей, чтобы узнать, сколько потребителей приняли сообщение.Проверьте aq $ _my_queue_table и aq $ _my_queue_table_I, чтобы увидеть статус сообщений.

...