0

ActiveMQとプロデューサーに関する質問があります。

メッセージを送信するたびにプロデューサーを作成する必要がありますか?または、常に同じものを使用しますか?送信ごとにプロデューサーを作成することで、パフォーマンスに影響はありますか?

また、一定期間操作がないと接続が切断されますが、これに関連しているかどうかはわかりませんが、アドバイスはありますか?

4

1 に答える 1

0

はい、特にブローカーが別のマシンにある場合、プロデューサーの作成にはパフォーマンスへのわずかな影響があります(クライアントは、プロデューサーを作成するためにブローカーと通信する必要があります)。

この回答の残りの部分では、Java/JMSを使用してAMQと通信することを前提としています。

非常に些細なプログラムを使用している場合は、もちろん、プロデューサーを「再利用」し、「NULL」の宛先で作成し、送信時に宛先を設定することができます。

簡単にするためにできることは、接続、セッション、およびプロデューサーをプールするPooledConnectionFactoryを使用することです。ラッパークラスが役立つと思います。

実際には、次のようにPooledConnectionFactoryを使用できます(擬似コード)。

 cf = new PooledConnectionFactory(myOriginalConnectionFactory)
 sendMessage(cf)
 sendMessage(cf)
 sendMessage(cf)

 SendMessage(connectionFactory)
   conn = connectionFactory.CreateConnection
   sess = conn.CreateSession
   prod = sess.createProducer
   msg = sess.createMessage
   prod.send(msg)
   prod.close
   sess.close
   conn.close

これは、閉じた/開いたセッション、接続などについて心配する必要がないことを意味します。これは、JmsTemplateSpring Frameworkで広く使用されている方法です(もちろん、プールされた/キャッシュされたリソースではるかにうまく機能します)。

また、パフォーマンスのヒントとコツについては、このページをご覧ください。

于 2012-10-15T11:07:28.267 に答える