【问题标题】:JMS JNDI unique name to be accessible from both cluster and standalone instances可从集群和独立实例访问的 JMS JNDI 唯一名称
【发布时间】:2017-03-02 09:54:27
【问题描述】:

我有一个包含 5 台托管服务器的 weblogic 域。其中 3 个在集群中,2 个独立。一个应用程序部署在集群上,第二个和第三个应用程序部署在剩余的两个节点上。 在所有 3 个应用程序中,我需要使用 相同的 JNDI 名称 访问 JMS 队列和连接工厂(即使用集群和独立实例中的 jms/q1 来访问队列)。它不必是同一个队列,但名称在域中应该是唯一的。 我尝试使用分布式队列(UDD),但它不允许将集群与非集群节点混合。

有哪些选项可以实现这一点,并将 JMS 队列部署在同一个域中?

【问题讨论】:

  • 这无法完成。每个服务器都有关于在其 JNDI 树中的域中配置的每个队列的信息。为什么您可能希望在同一个 JNDI 下拥有三个不同的队列?您要解决的实际问题是什么?

标签: jms weblogic


【解决方案1】:

对不起,我现在会尝试澄清它。理想情况下,所有 JNDI 名称应该指向同一个队列(如果不可能的话,我保留了该选项)。

现在关于问题。我有一个打包的应用程序(IBM Maximo),部署在集群 c1 和独立节点 n1、n2 上,带有 3 个不同的 ear 文件,配置略有不同(每个文件的登录方法不同)。我需要启用 JMS 与外部 ESB 系统的集成。我无法为每个部署实例配置 JMS 名称,JNDI 是从数据库中读取的。

weblogic 的问题在于 分布式 队列 (UDD) 不能同时部署在集群 独立实例上。分布式队列在所有部署的节点上都有唯一的 JNDI 名称。

一个非常丑陋的解决方案可能是使用外部 JNDI 服务器,并指向外部 JMS 服务器,如 HORNETQ。我已经尝试过了,该解决方案既简单又有效,但这是在生产中管理的另一个系统,我想避免它。

我知道可以做到,因为分布式队列机制在weblogic中为集群工作,每个节点都指向同一个JMS队列,具有相同的JNDI名称,但我不能添加独立节点。此外,为每个独立实例创建单独的域并不是一个非常理想的选择。

【讨论】:

  • 回答我自己的问题:可以为独立服务器创建具有与分布式 JNDI 名称相同的 JNDI 名称的队列。唯一的问题是我将在 EBS 端收听多个队列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多