【问题标题】:JMS - One ConnectionFactory per Queue or one ConnectionFactory for all of the queuesJMS - 每个队列一个 ConnectionFactory 或所有队列一个 ConnectionFactory
【发布时间】:2015-03-21 20:28:26
【问题描述】:

我将 WebSphere 与 ActiveMQ 和 ActiveMQ 的 JCA 适配器一起使用。在我们的应用程序中,有很多不同功能的队列。那么您能告诉我,我应该为每个队列(功能)创建一个 ConnectionFactory 还是为整个应用程序创建一个 ConnectionFactory 并为队列共享?以及原因。

提前致谢。

【问题讨论】:

  • 我关心的是性能。那么哪一个会有更好的表现呢?

标签: jms websphere activemq


【解决方案1】:

真的取决于您的要求。它不是特定于 ActiveMQ,而是一般的排队。您通常可以在以下情况下创建单独的连接工厂:

  • 不同队列的不同主机/端口
  • 要连接的不同安全凭据
  • 想要拥有不同的连接池

例如,如果您想确保某些队列至少有 n 个连接可用,您可以为此创建单独的连接工厂。与一个连接工厂一样,在某些极端情况下,当您的大部分应用程序负载 - 比如说 - functionalityA 队列时,您的 functionalityB 可能没有足够的连接队列和该功能可能会遭受饥饿。

【讨论】:

  • 是的,在连接池的情况下,有时我们可能需要几个连接池来保证连接的数量。但我想知道,如果我们使用相同的代理,为什么不重用相同的连接?因为建立连接的成本非常高。
  • @XunRen 这就是你有一个池的原因,因为建立连接很昂贵。但是,从性能角度来看,在不同线程之间同时共享相同的连接并不好。
猜你喜欢
  • 2014-09-17
  • 2014-04-23
  • 2012-02-12
  • 2015-07-19
  • 1970-01-01
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多