Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

18.17.2. JMS の調整

JMS API を使用している場合は、いくつかの調整を行うことができます。
  • メッセージ ID を無効にします。MessageProducer クラスで setDisableMessageID() メソッドを使用して、メッセージ ID が必要ない場合に無効にします。これにより、メッセージのサイズが減少し、一意の ID の作成のオーバーヘッドも回避されます。
  • メッセージのタイムスタンプを無効にします。MessageProducer クラスで setDisableMessageTimeStamp() メソッドを使用して、メッセージのタイムスタンプが必要ない場合にそれらを無効にします。
  • ObjectMessage を使用しません。ObjectMessage は便利ですが、コストがかかります。ObjectMessage の本文は、Java のシリアライゼーションを使用してこれをバイトにシリアライズします。小さいオブジェクトでも Java のシリアライズ形式は非常に冗長であるため、ネットワーク上の多くのスペースを占有します。また、カスタムマーシャリング技術と比較して、Java のシリアライズも遅くなります。他のメッセージタイプの 1 つを使用できない場合にのみ ObjectMessage のみを使用します。これは、ランタイムまでペイロードのタイプが分からない場合です。
  • AUTO_ACKNOWLEDGE を使用しません。AUTO_ACKNOWLEDGE モードでは、クライアント上で受信される各メッセージについてサーバーから確認応答を送信する必要があります。つまり、ネットワーク上のトラフィックが多いことを意味します。可能であれば DUPS_OK_ACKNOWLEDGE を使用するか、CLIENT_ACKNOWLEDGE またはトランザクションセッションを使用し、1 つの確認応答/コミットで多くの確認応答をバッチアップします。
  • 永続メッセージを使用しません。デフォルトでは、JMS メッセージは永続化されます。永続メッセージが必要ない場合は、それらを 非永続に設定します。永続メッセージにより、ストレージへの永続化のより多くのオーバーヘッドが発生します。
  • 1 つのトランザクションでの多数の送信または確認応答。HornetQ では、送信または確認応答ごとにではなく、コミット時にネットワークラウンドトリップのみが必要になります。