【问题标题】:Should I use just one Session in my application based on HornetQ?我应该在基于 HornetQ 的应用程序中只使用一个会话吗?
【发布时间】:2011-05-19 03:57:52
【问题描述】:

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

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

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

【问题讨论】:

    标签: java session hornetq


    【解决方案1】:

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

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

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

    【讨论】:

    • side q,从同一个会话中创建 2x 个生产者并可能同时在不同的线程中使用它们是否安全?
    • 你好 mP;我会说不是。我的意思是,它可能会起作用,具体取决于 JMS 实现和您的实现,但这绝对是禁忌。相反,我会考虑实现某种服务器会话池,其中生产者从池中获取会话,发送消息并将会话返回到池中。
    • 如何为每个事务创建新会话?这有意义吗?
    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2015-03-02
    • 2014-08-12
    • 2012-07-25
    • 2015-04-29
    • 2018-10-16
    • 1970-01-01
    相关资源
    最近更新 更多