通过DBAdapter以非阻塞方式调用存储过程

时间:2014-04-24 12:43:00

标签: soa-suite

我想了解如何以非阻塞方式通过BPEL调用存储过程。我担心的是我有一个我正在调用的存储过程(在DBAdpater中),但它花了很多时间(大约30分钟),我不能等到这个完成。

我正在尝试在复合应用程序中设置invoke属性“nonBlockingInvoke”但它不起作用,适配器阻塞直到获得respsonse。

感谢。

1 个答案:

答案 0 :(得分:0)

当您想要为Sync Invoke分支执行单独的执行线程时,Nonblockinginvoke用于FLOW,因此它不会阻止其他流。 FLOW是协作并行 - 不是真正的并行。同步调用仍然在通话期间阻止。阅读更多here

无论如何,您的问题的一个解决方案是使用一个新的组合调用Async,该组合使用DB适配器来执行存储的proc。因此,您的新服务调用其他服务异步,因此它不会阻止 - 但是调用db适配器的服务会阻塞,但此时,您的调用程序是免费的。 将数据库适配器调用包装在它们自己的组合中以将真正的服务实现与数据库服务接口分离/隔离 - 这可能会发生变化,这不是一个坏主意。