在 Oracle WebLogic Server 中定位外部服务器的常见做法是什么

2022-09-03 16:01:15

我们正试图提出一些接近简单明了的模型来定位WebLogic中的JMS资源(我知道机会很大)。队列和主题可以轻松直观地映射到 WebLogic 服务器上运行的 JMS 服务器,但外部服务器及其中的资源似乎有点棘手。

在 WLS 10.0 和 10.3 中,首先,外部服务器不是在 JMS 服务器旁边定义的,而是作为 JMS 模块的成员定义的。其次,它们默认以定义它们的 JMS 模块的目标为目标,即 WLS 集群或 WLS 服务器,这与通过子部署面向 JMS 服务器的“非外部”资源不同。

但是,使用高级定位,也可以将外部服务器定位在 JMS 服务器上。这导致模型相对于外部/“非外部”JMS资源更加对称。

高级定位 http://dexter.xebialabs.com/Media/foreign_server_advanced_targeting.png

所以,问题是:

  1. 除了历史偶然之外,为什么外国资源和“非外国”资源目标如此不同(默认情况下,WLS集群或WLS服务器上的外国资源与JMS服务器上的非外国资源)有什么原因?
  2. 针对外国和非外国资源是否有任何常见或最佳做法?
  3. 有什么理由不想通过子部署将外部服务器作为JMS服务器的外部服务器?

提前致谢!

安德鲁·菲利普斯


答案 1

1) 国外的 JMS 服务器曾经被定义为一个独立的组件,类似于连接器、消息传递桥等。这些组件(过去)直接面向应用程序服务器或集群,而不是像 JMS 服务器那样的中间组件。

在后来的版本中,Oracle试图将内部和外部JMS合并到一个通用的保护伞下。但是,目标选项保持不变。为了提供 JMS 部分的灵活性,引入了子部署。为了保持一致性,Oracle似乎已经扩展到了外部服务器的子部署,使事情变得非常复杂/混乱。

我不会称之为意外,因为较新的版本一直符合此设置:)

2) 对于跨集群部署的应用程序,您需要为整个集群定义一个 JMS 模块。连接工厂的多个定义将扭曲 JMS 负载平衡。

我们的最佳实践集中在为每个集群创建单个 JMS 模块(如果未集群,则为应用服务器)的标准,然后在同一模块中创建外部服务器和 weblogic JMS 队列/连接工厂。此外,为子部署和 JMS 模块设置良好的命名约定还有很长的路要走。

3) 一旦运行 >16 个并发 MDB,外部服务器(尤其是 IBM MQ)可能会出现很多复杂的问题。我们避免了外部服务器 -> JMS Server -> Managed Server,以减少额外的抽象/复杂性层,以保持配置更简单。您还可以降低外部服务器的异常被神秘的 JMS 服务器异常屏蔽的风险(我没有任何证据证明这一点)。

一位队友曾经建议,外国服务器->应用服务器设置的性能更高,但我们让Oracle的A-team确认这只是一个逻辑/美学上的改变,应该并不重要。

希望有所帮助!


答案 2

虽然我不是这个领域的专家,但我对这个主题的理解是:基础是将“什么”和“如何”的关注点分离到jms模块和jms服务器中。JMS 模块管理消息和目标,jms 服务器管理这些消息的存储和传递方式。

当涉及到JMS外部服务器时,这可能变得模糊不清。资源只是一个目标,“如何”理论上是外部服务器关注的问题。


推荐