0

我正在尝试使用Oracle Service Bus从IBM Websphere MQ获取消息。我在 OSB 中启用了“ XA ”连接工厂并选中了“需要事务”复选框。但是当我选中“ Same transaction For Response ”复选框时,我得到了“pipelineException”。

有人知道这个问题吗??是否有任何描述整个过程的指南或文件?(不确定我是否走在正确的轨道上。)

4

1 回答 1

1

OSB 的构造方式是请求管道和响应管道使用不同的线程。当说不同的线程时,执行请求管道的线程一到达请求管道的末端就完成了。weblogic为执行响应管道分配了一个新线程。

现在来到“Same transaction For Response”选项,这仅仅意味着请求和响应管道应该使用相同的线程而不是新线程。

当有非常严格的错误监控(主要是在同步情况下)时,应该使用“Same transaction For Response”选项。例如,如果流程如下,

MQ 客户端 > OSB 应用程序 <> HTTP 后端/同步 JMS

然后,

  • (在未启用“响应的相同事务”的场景中) - 如果同步后端未发送响应并且如果存在
    异常,则异常不会传播到 OSB 响应
    管道,因为请求线程已经完成并且它完成后的反应无关紧要。所以 OSB 就好像后端什么都没发生一样继续进行。

  • (在启用“相同事务的响应”的场景中) - 如果后端抛出任何错误,如前一个场景中提到的,那么正在等待的请求线程捕获错误,然后将异常抛出到立即错误处理程序它可以找到。(阶段错误处理程序、代理错误处理程序、系统错误处理程序 - 以相同的顺序)。

现在来到您突出显示的错误并启用该选项,我想这应该是从您的后端发送的一些错误。请检查您从下游得到的响应是什么,并进行相应的更正。

于 2015-06-30T09:50:04.723 回答