基于异步响应轮询 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 表的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 Httpclient 进行长轮询

轮询异步任务,然后等待 1 次成功或所有响应被拒绝

使用 ReactPHP 异步的长轮询电报

jQuery AJAX 轮询 JSON 响应,基于 AJAX 结果或 JSON 内容进行处理

轮询新 S3 对象的最佳方法?

长轮询,websocket