【问题标题】:How to use Java JMS session in a multi Threaded Application?如何在多线程应用程序中使用 Java JMS 会话?
【发布时间】:2013-03-29 05:26:59
【问题描述】:

我正在开发独立的多线程应用程序,其中使用纯 JMS API 使用 P2P 机制同步发送和接收消息。当多个线程正在运行时,在使用消费者对象(每个线程一个消费者对象)接收数据时抛出异常,说 IllegalStateException: Session is closed。我尝试了以下两种方式。

1) 在单例类中创建连接和会话对象,并在发送和接收消息时使用这些对象。同步了发送和接收消息的代码。

2) 创建了 SessionPool 类(单例),它创建了 5 个会话。由于我的应用程序仅限于线程池计数 20,并且每个线程从会话池中检索会话并在收到消息后返回会话。这适用于 5 个线程,后来抛出异常说会话已关闭。

请帮助我了解如何有效地使用会话对象,而无需为每个线程创建一个会话。

【问题讨论】:

    标签: java jms


    【解决方案1】:

    您可能需要重新考虑您的架构。

    JMS 是一种在 JMS 提供者和 JMS 消费者之间进行通信的方式。这更像是一个客户端-服务器架构。我不建议将其用于 p2p。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-19
      • 2017-06-22
      • 2018-03-25
      • 1970-01-01
      • 2015-07-23
      • 2010-12-12
      • 1970-01-01
      • 2013-05-06
      相关资源
      最近更新 更多