|
|
一般的な JMS サーバー製品では、送信できるメッセージの最大サイズは、JMS プロバイダーや JMS クライアントのメモリ容量によって制限されることが普通です。通常、このメモリ サイズは、JVM (Java Virtual Machine) のヒープ サイズによって決定されます。
このため、取り扱えるメッセージのサイズは、JVM のメモリ空間のサイズに大きく依存します。
FioranoMQ では、大容量のメッセージを送受信するための JMS クライアント用の API を提供し、ほとんど無限大のサイズのデータ
も JMS メッセージとして送受信できるようにしています。
大容量メッセージの送受信
FioranoMQ の大容量メッセージ サポート (LMS: Large Message Support) 機能は、JMS API を拡張した API を用いて大容量のデータを 1 つのメッセージとして送信することを可能としました (JMS クライアントの JMS 準拠を損なうものではありません。
実際には、ランタイム ライブラリがデータを複数のメッセージに分割して送信します。
このため、プロデューサ側にデータ分割やその管理のためのロジックを埋め込む必要がありません。
同様に、コンシューマ側でもあたかも 1 つのメッセージを受信するようにプログラミングすることができます。分割されて送られてくるメッセージの受信やその復元は、すべてランタイム ライブラリが実行します
LMS を利用したクライアントは以下のように動作しますが、これはランタイム ライブラリによって自動的に実行されます。
- 大容量データが格納されたファイルから、指定された小さなサイズに分けて読み込んできます。
この小さなかたまりをフラグメントと呼びます。
- 各フラグメントは、単体の JMS メッセージとしてディストネーションに送信されます。
フラグメントの送信は、JMS API を用いて行われます。
- フラグメントの承認 (ACKNOWLEDGE) は、JMS の通常の承認機能と FioranoMQ のLMS 承認機能とで2重に行われます。
LMS の承認は、ウィンドウと呼ばれる単位で行われます。ウィンドウとは、複数のフラグメントをまとめたもので、含まれるフラグメントの数をウィンドウ サイズとして指定します。
- 送信側クライアントは、フラグメントの送信数がウィンドウ サイズに達すると、送信を中断し、受信側からの ACKNOWLEDGE を待ちます。
- 受信側クライアントでは、JMS API を用いて JMS サーバーからフラグメントを受け取り、ローカル ファイルに組み立てていきます。
- 受信側クライアントは、フラグメントの受信数がウィンドウ サイズに達すると、ACKNOWLEDGE を送信側クライアントに送ります。
- 送信側クライアントは、ACKNOWLEDGE を受け取ると、フラグメントの送信を再開します。
大容量メッセージ機能は、PTP および Pub/Sub の両ドメインで行うことが可能になっています。
FioranoMQ をご使用いただければ、クライアントやサーバーの機器構成、メモリサイズなどに関わらず、大容量メッセージの転送を行うことができます。このような大容量メッセージの送信が不可欠なエンタープライズ アプリケーションには、FioranoMQ (JMS サーバー) が最適な選択となっています。
|
|
|
|
|
|