如何使Oracle UTL_HTTP.request异步化?

3

我有一个定期运行的工作,但我对响应结果不感兴趣。

有没有办法使调用约定,在请求时不等待响应呢?

谢谢!


你的需求实际上是异步处理的一种放松,因为你根本不关心响应 - 实际上你发出了一个REST webservice调用,忽略了任何响应。设置一个短暂的超时时间,并使用空处理程序捕获超时异常。另一个选项(实际上是首选,但我还没有测试过)是调用utl_http.begin_request,然后是utl_http.end_request,它会忽略任何可能的服务器响应。 - collapsar
1个回答

0

我将API请求编写为一个过程,并在DBMS_JOB方法中调用了PL/SQL输出。

 L_REQUEST:=' DECLARE
            BEGIN
            SCOTT.PROCEDURE_SENDER ('''|| ITEMS || ''',1);
            
            COMMIT;
        END;';
        
     DBMS_OUTPUT.PUT_LINE (L_REQUEST);
     DBMS_JOB.SUBMIT (L_JOB, L_REQUEST);
     DBMS_OUTPUT.PUT_LINE (L_JOB);

我认为即使如此,您的过程仍将通过调度程序在另一个DB会话上启动请求,并且仍将等待响应,因为utl_http将是同步的。 - AhMaD AbUIeSa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接