Лучший способ опроса таблицы Oracle на основе асинхронного ответа - PullRequest
0 голосов
/ 16 апреля 2020

Как я могу обработать асинхронный ответ, который в конечном итоге обновляет флаг состояния в таблице Oracle?

У меня в основном есть процедура PL / SQL, которая выполняет вызов REST с использованием APEX_WEB_SERVICE API.

Мой вопрос заключается в том, что асинхронно это в конечном итоге приведет к обновлению флага состояния в таблице, который сообщит мне, была ли операция в порядке или НЕПРАВИЛЬНО.

Каков наилучший способ опроса этой таблицы? чтобы проверить, был ли получен ответ OK или FAIL, используя Oracle PL / SQL?

Я смотрел на DBMS_LOCK.sleep(), но не уверен, что это лучший подход. Может ли DBMS_ALERT также работать для этого?

1 Ответ

1 голос
/ 16 апреля 2020

Вместо того, чтобы опрашивать таблицу с интервалом, я бы рекомендовал использовать Oracle Расширенные очереди вместе с Oracle Планировщиком. AQ разработан именно для такого рода вещей. Вы можете создать «запланированное» задание, которое запускается сообщением (отправляемым асинхронным процессом одновременно с обновлением таблицы), отправляемым в очередь. Планировщик видит сообщение и запускает соответствующее задание или цепочку заданий, чтобы завершить sh обработку.

См. Здесь пример c: https://pmdba.wordpress.com/2017/08/21/aq-basics/

...