每次将消息发送到队列时创建以下对象的开销是多少?
对象:javax.jms.Connection
,javax.jms.Session
,javax.jms.MessageProducer
在我的代码中,每当我想发送消息时,我都会创建3个以上的对象。
我知道只创建一次对象并使用它很好但是在服务器故障转移后连接/会话进入 IllegalState 。我的connectionFactory
能够重新连接,但无法刷新连接/会话对象。
有人可以解释我的开销吗?
答案 0 :(得分:1)
https://developer.jboss.org/wiki/ShouldICacheJMSConnectionsAndJMSSessions
High Performance JMS Messaging
:)
答案 1 :(得分:0)
每次创建与消息传递提供程序的连接和会话总是代价高昂。每次请求连接时,底层消息传递库都必须创建到消息传递提供程序的套接字连接,流动一些握手数据并建立用于发送消息的通道。发送消息后,连接关闭还需要将一些消息传递提供程序特定数据发送到正常关闭的连接。
您可以通过在每次创建连接/会话时运行一些测试来量化开销。但是上面的解释提示了创建/关闭连接所涉及的内容。