2

在基于 HornetQ 引擎的应用程序中,我打算创建多个生产者和消费者。我了解到,感谢这个页面,我应该尽可能多地重用资源。

这是否意味着,对于我的应用程序,我应该创建一个并且恰好是一个 ConnectionFactory、一个 Connection、一个 Session,然后(使用这个 Session 对象)创建任意数量的生产者/消费者?

这应该不难,但我不确定这是否是正确的方法。

4

1 回答 1

10

最小资源使用的最佳经验法则是在保持线程安全的同时尽可能使用最少的构造。因此:

  1. 连接工厂是线程安全的:每个 JMS 服务器一个(或每个 JMS 服务器每个主题和队列的目标类型一个)
  2. 连接是线程安全的:根据应用程序架构,您可能可以使用一个连接,但我不会向后弯腰去做。
  3. 会话和会话下的所有构造都不是线程安全的:每个并发线程(或者如果您这样考虑的话,每个事务都需要一个会话)。

基于此,希望您可以在优雅的架构和低资源利用率之间取得平衡。

于 2010-12-02T14:35:45.330 回答