21.3. 大きいメッセージのストリーミング
HornetQ は、入力および出力ストリームを使用したメッセージのボディーの設定をサポートします (
java.lang.io)。
これらのストリームは、メッセージを送信 (入力ストリーム) および受信 (出力ストリーム) するために直接使用されます。
メッセージを受信する場合は、出力ストリームを 2 つの方法で使用できます。メソッド
ClientMessage.saveOutputStream、またはメッセージをストリームに非同期的に書きこむメソッド ClientMessage.setOutputstream を使用して出力ストリームが復元されるときにブロックを選択できます。ClientMessage.setOutputstream を選択した場合は、メッセージが完全に受信されるまでコンシューマーが存続している必要があります。
どんな種類のストリームでも使用できます。最も一般的な使用ケースは、ディスク状に保存されたファイルを送信することですが、以下のようなものを送信することもできます。
- JDBC BLOB
SocketInputStreamHTTPRequestsから復元されるものなど
メッセージを送信するために
java.io.InputStream、またはメッセージを受信するために java.io.OutputStream を実装するすべてのものを使用できます。
21.3.1. コア API を介したストリーミング リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の表は、オブジェクトプロパティーを使用することにより JMS を介して利用できる
ClientMessage で利用可能なメソッドのリストを示しています。
| 名前 | 説明 | JMS の同等プロパティー |
|---|---|---|
| setBodyInputStream (InputStream) | メッセージの送信時にメッセージボディーを読み取るために使用する InputStream を設定します。 | JMS_HQ_InputStream |
| setOutputStream (OutputStream) | メッセージのボディーを受信する OutputStream を設定します。このメソッドはブロックしません。 | JMS_HQ_OutputStream |
| saveToOutputStream (OutputStream) | メッセージのボディーを OutputStream に保存します。これは内容全体が OutputStream に転送されるまでブロックされます。 | JMS_HQ_SaveStream |
コアメッセージの受信時に出力ストリームを設定する場合:
コアメッセージの送信時に入力ストリームを設定する場合:
... ClientMessage msg = session.createMessage(); msg.setInputStream(dataInputStream); ...
...
ClientMessage msg = session.createMessage();
msg.setInputStream(dataInputStream);
...