【问题标题】:OSB Proxy Service message processingOSB 代理服务消息处理
【发布时间】:2017-04-12 01:12:15
【问题描述】:

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

当前行为:

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

在代理服务的消息流中无法处理消息的可能原因有哪些?消息流所做的只是将消息路由到业务服务,然后将消息发送到另一个远程端点 URI 队列。

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

在此先感谢您提供任何帮助。

【问题讨论】:

  • 在 OSB 控制台中,转到有问题的代理,单击操作设置选项卡并打开跟踪选项。也许这会帮助您获得一些日志记录以确定发生了什么?您也可以为业务服务执行此操作。
  • @better_use_mkstemp,感谢您的建议。我确实相信我已经启用了跟踪,但是,当启用代理服务并从远程队列中删除消息时,我没有看到任何记录。我认为应该将跟踪日志写入 OSB 服务器的标准日志文件是否正确?还是我在错误的地方寻找痕迹?
  • 您应该能够跟踪您正在访问其代理的托管服务器的日志,并看到如下消息:“[OSB Tracing] Routing to /services/enterprise/DataService/v2.0.0/DataServiceBusiness with消息上下文:”,然后是“[OSB 跟踪] 以下变量已更改:”或“[OSB 跟踪] 入站响应已发送”确保它是托管服务器日志,而不是其他日志。类似于 /servers//logs
  • 我查看了 OSB 服务器的日志文件,没有任何迹象表明正在记录任何跟踪级别的消息。当我启用代理服务时,我可以看到一个 INFO 级别日志,其中显示:The Message-Driven EJB has connected/reconnected to the JMS destination: REMOTE_QUEUE_NAME,我可以看到远程队列的Messages Current 计数下降到 0,Messages Pending 计数增加到 1,但没有任何迹象通过代理服务出现在日志文件中。
  • 问题解决了吗?我目前有同样的问题。提前致谢。

标签: jms weblogic osb


【解决方案1】:

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

如果您的资源名称重复,无论它们位于哪个服务器中,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 队列开始按预期工作,无需对我的代理和业务服务之前的代码进行任何修改。

【讨论】:

  • 命名冲突问题很可能是原始问题设置中跨 Weblogic 域的问题。我不能肯定这是现在的问题,但您的评论可以在未来对其他人有所帮助。
【解决方案2】:

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

问候 赛德K

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多