OSB代理服务消息处理

时间:2013-05-28 10:12:59

标签: jms weblogic osb

在Weblogic OSB中,我们有一个代理服务,它应该使用来自远程Weblogic JMS队列的消息,并通过业务服务将它们路由到另一个远程Weblogic JMS队列。出于某种原因,消息被代理服务消耗,但它们永远不会被路由到业务服务。

当前行为:

启用后,OSB代理服务会删除放置在远程端点URI队列中的所有消息,但消息似乎不会在代理服务的消息流本身内流动。启用代理服务后,远程队列中的消息将被删除,但会被视为处于“挂起”状态。禁用代理服务后,消息将被放回队列中。

为什么在Proxy Service的消息流中不能处理消息的原因是什么?所有消息流都是,将消息路由到业务服务,然后业务服务将消息发送到另一个远程端点URI队列。

PS:当消息通过测试控制台注入代理服务时,消息流/路由到业务服务没问题,所以我认为问题必须在某个地方的初始远程队列/代理服务接口?也许权限或交易相关的问题?但我无法看到任何有关配置或服务器日志错误的提示......

提前感谢您提供任何帮助。

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,发现这可能是命名冲突问题。

如果您的资源名称重复,无论它们是哪个服务器,WebLogic都可能会产生意外行为。因此,根据Oracle的文档Best Practices for JMS Beginners and Advanced Users,您应遵守以下命名规则:

  
      
  • 域名必须是唯一的。
  •   
  • WebLogic服务器名称必须是唯一的,即使它们位于两个不同的域中。
  •   
  • JMS服务器名称必须是唯一的,即使它们位于两个不同的域中。
  •   

举例说明发布上述陈述的情景。我有以下有问题的拓扑:

|   WebLogic    |   IP          |   Domain      |   Server      |
|   WebLogic 1  |   10.10.10.73 |   osb_domain  |   osb_server1 |
|   WebLogic 2  |   10.10.10.83 |   osb_domain  |   osb_server1 |
|   WebLogic 3  |   10.10.10.93 |   osb_domain  |   osb_server1 |

请注意域和服务器之间的名称冲突。即使我的JMS资源名称不同,这些命名冲突也足以导致问题。

然后我将拓扑更改为以下内容:

|   WebLogic    |   IP          |   Domain      |   Server      |
|   WebLogic 1  |   10.10.10.73 |   osb_domain1 |   osb_server1 |
|   WebLogic 2  |   10.10.10.83 |   osb_domain2 |   osb_server2 |
|   WebLogic 3  |   10.10.10.93 |   osb_domain3 |   osb_server3 |

此次没有更多冲突,然后我的JMS队列开始按预期工作,而不对我的代理和业务服务的先前代码进行任何修改。

答案 1 :(得分:0)

在您的代理服务中,转到“操作设置”选项卡,并确保已启用“已启用跟踪调试”的日志记录。跟踪应设置为“完整”,大小设置为800.

此致 赛义德K

答案 2 :(得分:-1)

您可以设置JMS连接工厂的“每会话的MAx消息”属性:默认值为10,将其设置为1,一次只向每个消费者传递1条JMS消息。默认行为是最多10条消息被传递给同一个消费者,该消费者只有1个线程,因此所有10个消息都标记为待定,而只有1个正在处理。