Oracle Advanced Queue - условие ожидания не работает

В Eclipse: щелкните правой кнопкой мыши проект-> Maven-> Обновить проект-> Проверить флажок «Принудительное обновление снимков / выпусков». Нажмите OK.

0
задан mouhannad 26 February 2019 в 10:59
поделиться

2 ответа

Простая проверка, находится ли в очереди сообщение с заданным приоритетом. Замените aqtab на имя таблицы вашей очереди

 select * from aqtab where priority = 10 order by ENQ_TIME;

Очень вероятно, что вы не увидите беспорядка, так как это условие priority = 10 просто добавляется в запрос, выполняющий очередь.

Обратите внимание, что для установки приоритета сообщения вы используете свойства сообщения

 l_message_properties dbms_aq.message_properties_t;

Просто назначьте требуемый приоритет ...

 l_message_properties.priority := 10;

... и передать свойства в качестве параметра DBMS_AQ.enqueue

После commit вы должны увидеть сообщение в таблице очередей, используя приведенный выше запрос, и вы сможете снять с deq_condition

0
ответ дан Marmite Bomber 26 February 2019 в 10:59
поделиться

Обе версии верны
dequeue_options.deq_condition := 'priority = 10';
dequeue_options.deq_condition := 'tab.priority = 10';

Но если вы используете условие deq, вам следует позаботиться о параметре navigation. Самый простой вариант - повторить операцию удаления очереди после появления исключения. (снимок очереди будет сброшен).

или добавить dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE;.

0
ответ дан Arkadiusz Łukasiewicz 26 February 2019 в 10:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: