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 服务器上定位外部服务器?

提前致谢!

安德鲁·菲利普斯

4

2 回答 2

3

1) 外部 JMS 服务器过去被定义为独立组件,类似于连接器、消息传递桥等。这些组件(历史上)直接针对应用程序服务器或集群,而不是像 JMS 服务器这样的中间组件。

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

我不会称其为意外,因为较新的版本始终符合此设置:)

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

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

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

一位队友曾经建议,Foreign Server -> Application Server 设置的性能更高,但我们让 Oracle 的 A 团队确认这只是一个逻辑/美学上的改变,并不重要。

希望有帮助!

于 2011-03-21T20:45:18.797 回答
2

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

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

于 2010-12-03T02:39:42.363 回答