如何在多线程应用程序中使用Java JMS会话?

时间:2013-03-28 20:57:30

标签: java jms

我正在开发独立的多线程应用程序,使用普通的JMS API来使用P2P机制同步发送和接收消息。当多个线程正在运行时,在使用消费者对象(每个线程一个消费者对象)接收数据时抛出异常,说明IllegalStateException:会话已关闭。我试过以下两种方式。

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

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

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

1 个答案:

答案 0 :(得分:0)

您可能想重新考虑您的架构。

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