首页 文章

OSB代理服务消息处理

提问于
浏览
2

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

目前的行为:

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

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

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

在此先感谢任何帮助 .

3 回答

  • 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队列开始按预期工作,没有对我的代理和业务服务的先前代码进行任何修改 .

  • 0

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

    关心Syed K.

  • -1

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

相关问题