Как определить в 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, чтобы увидеть статус сообщений.

Другие вопросы по тегам