AMQブローカー5.5とSpring 3.0を使用して、接続ファクトリーなどの設定を行います。私たちが使用している 接続ファクトリはPooledConnectionFactoryで、私の設定の一部は次のようになります。JmsTemplateはPooledConnectionFactoryを使用しても接続を閉じません。
<豆ID =「jmsFactory」クラス=「org.apache.activemq.pool.PooledConnectionFactory」破壊法=「停止します」 >
<プロパティ名= "はconnectionFactory" >
< Beanクラス= "org.apache.activemq.ActiveMQConnectionFactory" > <プロパティ名= "brokerURL" 値= "some_url"/>
< /豆>
< /プロパティ>
< /豆>
<! - Spring JMSテンプレート - >
<ビーンID = "jmsTemplate" クラス= "org.springframework.jms.core.JmsTemplate" >
<プロパティ名= "はconnectionFactory" > < REFローカル= "jmsFactory"/>
< /プロパティ>
<プロパティ名= "explicitQosEnabled" 値= "真"/>
<プロパティ名= "生存時間" 値= "86400000"/>
< /ビーン
A数日後にブローカーがクラッシュし、このエラーで再起動し続けました:
java.lang.OutOfMemoryError:requested
Chunk :: newの369384バイト。スワップ領域外?その時点で
は、jconsoleをから、私はすべての分を送信したメッセージを聞くことによって(ブローカー経由)サーバと話す私たちのクライアントアプリケーション の1つを除いて、ブローカーとの異例の何かを見つけることができませんでした 〜3000接続を作成しました(jconsoleで見た)。 いったん停止すると、すべて正常に戻りました。
これを避けるために、私は最後にこのようなことをするブロックで接続を閉じようとしました。
でも、私はjconsoleの中に浮遊している接続を見ることができ、メッセージを公開するクライアントアプリケーションがダウンすると失われます。 誰かがここで何が起こっているのか、各パブのサブサイクル後にどのように接続を閉じることができるのか理解できますか?
は、事前に
ハリ