在Weblogic OSB中,我们有一个代理服务,它只是简单地使用来自远程Weblogic JMS队列的消息,并通过业务服务将它们路由到另一个远程Weblogic JMS队列。由于某些原因,消息被代理服务使用,但它们从未被路由到业务服务。
当前行为:
启用时,OSB代理服务将删除放置在远程终结点URI队列中的任何消息,但消息似乎不会在代理服务的消息流本身中流动。启用代理服务后,远程队列中的消息将被删除,但仍处于“挂起”状态。当代理服务被禁用时,消息被放回队列中。
为什么消息不能在代理服务的消息流中得到处理,可能的原因是什么?消息流所做的全部工作就是将消息路由到业务服务,然后业务服务将消息发送到另一个远程端点URI队列。
PS:当通过测试控制台将消息注入代理服务时,消息流/路由到业务服务没有问题,所以我认为问题一定出在初始远程队列/代理服务接口的某个地方?可能是权限或事务相关的问题?但我在配置或服务器日志中看不到任何错误的提示...
提前感谢你在这方面的帮助。
发布于 2017-04-12 01:12:16
我遇到了同样的问题,并发现这可能是一个命名冲突问题。
如果您的资源具有重复的名称,而不管它们位于哪个服务器中,WebLogic可能会产生意外的行为。因此,根据Oracle的文档Best Practices for JMS Beginners and Advanced Users,您应该遵守以下命名规则:
JMS域名必须是unique.
为了举例说明发出上述语句的场景。我有以下有问题的拓扑:
| 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队列开始按预期工作,而不需要对我的代理和业务服务的先前代码进行任何修改。
发布于 2013-10-08 19:37:02
在您的代理服务中,转到Operation settings选项卡,并确保已启用日志记录,以便在启用跟踪的情况下进行调试。跟踪应设置为Full,大小为800。
关于Syed K
发布于 2014-01-10 21:06:14
您可以设置JMS Connection Factory的“JMS Per Session”属性:默认值为10,将其设置为1,则一次只有一条MAx消息传递给每个使用者。默认行为是将最多10条消息传递给同一消费者,该消费者只有1个线程,因此所有10条消息都被标记为挂起,而只有1条消息正在处理中。
https://stackoverflow.com/questions/16789438
复制相似问题