第21章 大きなメッセージ
HornetQ は、クライアントとサーバーが制限されたメモリーで稼動している場合であっても、大きいメッセージの送受信をサポートします。送信または消費できるメッセージのサイズに対する唯一の現実的な制限は、利用可能なディスク領域のサイズです。
大きいメッセージを送信するために、ユーザーはメッセージボディーで
InputStream を設定できます。このメッセージが送信された場合、HornetQ は InputStream を読み取ります。たとえば、FileInputStream は、ディスク上の大きいファイルから大きいメッセージを送信するために使用できます。
InputStream が読み取られた場合、データは断片のストリームとしてサーバーに送信されます。サーバーはこれらの断片を受け取ったときにディスクに断片を永続化します。データをコンシューマーに配信するときに、データはディスクから断片単位で再び読み取られ、再配信されます。コンシューマーが大きいメッセージを受け取る場合、コンシューマーは最初にボディーが空のメッセージのみを受け取ります。メッセージで OutputStream を設定して、大きいメッセージボディーをディスク上や他の場所にあるファイルにストリーミングできます。メッセージボディー全体は、クライアントまたはサーバーのいずれかでメモリーに完全に保存されません。
21.1. サーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
大きいメッセージは、
JBOSS_DIST/jboss-as/server/PROFILE/deploy/hornetq/hornetq-configuration.xml で設定されたように、サーバーサイドのディスクディレクトリに保存されます。
設定プロパティー
large-messages-directory は、大きいメッセージが保存される場所を指定します。
デフォルトでは、大きいメッセージディレクトリは
data/large-messages です。
パフォーマンスを最大化する場合は、大きいメッセージディレクトリを、メッセージジャーナルまたはページングディレクトリと異なる物理ボリュームに格納することが推奨されます。