18.2. 非トランザクションメッセージ送信の保証
メッセージが非トランザクションセッションを使用してサーバーに送信される場合、HornetQ はメッセージがサーバーに完全に到着し、応答がクライアントに送り返されるまで送信をブロックできます。これは、耐性および非耐性メッセージに対して個別に設定でき、以下の 2 つのパラメーターによって決定されます。
BlockOnDurableSend- これが
trueに設定された場合、非トランザクションセッションの耐性メッセージに対するすべての送信コールは、メッセージがサーバーに到達し、応答が送り返されるまでブロックされます。デフォルト値はtrueです。 BlockOnNonDurableSend- これが
trueに設定された場合、非トランザクションセッションの非耐性メッセージに対するすべての送信コールは、メッセージがサーバーに到達し、応答が送り返されるまでブロックされます。デフォルト値はfalseです。
送信ブロックを
true に設定すると、次の送信が実行される前に各送信がネットワークラウンドトリップを必要とするため、パフォーマンスが低下することがあります。つまり、メッセージを送信するパフォーマンスは、ネットワークの帯域幅ではなくネットワークのネットワークラウンドトリップ時間 (RTT) によって制限されます。パフォーマンスを向上させるために、多くのメッセージ送信を 1 つのトランザクションでバッチ処理するか (トランザクションセッションでは、コミット/ロールバックのみが各送信をブロックしません)、「非同期送信承認」 で説明された 非同期送信承認機能を使用します。
JMS 接続ファクトリーインスタンスを JNDI にロードするためにサーバーで JMS と JMS サービスを使用している場合は、要素
block-on-durable-send および block-on-non-durable-send を使用してこれらのパラメーターを JBOSS_DIST/jboss-as/server/PROFILE/deploy/hornetq/hornetq-jms.xml で設定できます。JMS を使用し、JNDI を使用していない場合は、適切なセッターメソッドを使用して HornetQConnectionFactory インスタンスで直接これらの値を設定できます。
コアを使用している場合は、適切なセッターメソッドを使用して
ClientSessionFactory インスタンスで直接これらの値を設定できます。
サーバーが非トランザクションセッションから送信されたメッセージを受け取り、このメッセージが耐性であり、少なくとも 1 つの耐性キューにルーティングされる場合は、サーバーがメッセージを永久ストレージに永続化します。ジャーナルパラメーター
journal-sync-non-transactional が true に設定されている場合、サーバーは、メッセージが永続化され、データがディスクに永続化されたことがサーバーで保証されるまで応答をクライアントに送り返しません。このパラメーターのデフォルト値は true です。