我正在尝试使用Oracle Service Bus从IBM Websphere MQ获取消息。我在 OSB 中启用了“ XA ”连接工厂并选中了“需要事务”复选框。但是当我选中“ Same transaction For Response ”复选框时,我得到了“pipelineException”。
有人知道这个问题吗??是否有任何描述整个过程的指南或文件?(不确定我是否走在正确的轨道上。)
我正在尝试使用Oracle Service Bus从IBM Websphere MQ获取消息。我在 OSB 中启用了“ XA ”连接工厂并选中了“需要事务”复选框。但是当我选中“ Same transaction For Response ”复选框时,我得到了“pipelineException”。
有人知道这个问题吗??是否有任何描述整个过程的指南或文件?(不确定我是否走在正确的轨道上。)
OSB 的构造方式是请求管道和响应管道使用不同的线程。当说不同的线程时,执行请求管道的线程一到达请求管道的末端就完成了。weblogic为执行响应管道分配了一个新线程。
现在来到“Same transaction For Response”选项,这仅仅意味着请求和响应管道应该使用相同的线程而不是新线程。
当有非常严格的错误监控(主要是在同步情况下)时,应该使用“Same transaction For Response”选项。例如,如果流程如下,
MQ 客户端 > OSB 应用程序 <> HTTP 后端/同步 JMS
然后,
(在未启用“响应的相同事务”的场景中) - 如果同步后端未发送响应并且如果存在
异常,则异常不会传播到 OSB 响应
管道,因为请求线程已经完成并且它完成后的反应无关紧要。所以 OSB 就好像后端什么都没发生一样继续进行。
(在启用“相同事务的响应”的场景中) - 如果后端抛出任何错误,如前一个场景中提到的,那么正在等待的请求线程捕获错误,然后将异常抛出到立即错误处理程序它可以找到。(阶段错误处理程序、代理错误处理程序、系统错误处理程序 - 以相同的顺序)。
现在来到您突出显示的错误并启用该选项,我想这应该是从您的后端发送的一些错误。请检查您从下游得到的响应是什么,并进行相应的更正。