基于异步响应轮询 Oracle 表的最佳方法
Posted
技术标签:
【中文标题】基于异步响应轮询 Oracle 表的最佳方法【英文标题】:Best means to poll an Oracle table based on an asynchronous response 【发布时间】:2020-04-16 03:31:26 【问题描述】:如何处理最终更新 Oracle 表中状态标志的异步响应?
我基本上有一个 PL/SQL 例程,它使用 APEX_WEB_SERVICE
API 进行 REST 调用。
我的问题是,异步地,这最终会更新表中的状态标志,它会告诉我操作是 OK 还是 FAIL。
轮询此表以检查是否已使用 Oracle PL/SQL 返回 OK 或 FAIL 响应的最佳方法是什么?
我在看DBMS_LOCK.sleep(
) 但不确定这是否是最好的方法。 DBMS_ALERT 也可以解决这个问题吗?
【问题讨论】:
您是否正在尝试完成其他操作或过程,例如发送电子邮件或运行其他程序? @pmdba 我需要使用从异步进程返回的结果运行另一个过程,假设它处于正常状态。 【参考方案1】:我建议不要定期轮询表,而是使用 Oracle 高级队列和 Oracle 调度程序。 AQ 就是专为这类事情而设计的。您可以创建一个“计划”作业,该作业由发送到队列的消息(由异步进程在更新表的同时发送)触发。调度程序看到消息并运行适当的作业或作业链以完成处理。
这里有一个基本的例子:https://pmdba.wordpress.com/2017/08/21/aq-basics/
【讨论】:
以上是关于基于异步响应轮询 Oracle 表的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章