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 では、送信または確認応答ごとにではなく、コミット時にネットワークラウンドトリップのみが必要になります。