一時データ保存領域
APIをMuleSoftが提供するCloudHubと呼ばれるクラウド上で稼働させる際に、一時的にデータを保管しておきたいことがあります。その場合に利用可能なのが下記の通り。
オプション | 概要 |
---|---|
Object Store | Key-Value型でのデータ保存が可能です。ただし、Base Subscriptionでは10 TPS(Transaction per second)が上限となり、それ以上のトラフィックは有償オプションが必要。 |
Anypoint MQ | メッセージキューです。処理プロセス間でのデータ受け渡しなどが中心となるかと思います。 また、有償オプションです。 |
外部のストレージ | SMBやAmazon S3等のファイル共有ストレージやデータベース等。 |
APIが稼働するワーカー内の領域 | ワーカーのサイズによって、既定の外レージサイズが割り当てられています。 |
推奨としては、Muleアプリケーションの再起動の影響を受けず大きなファイルも取り扱える外部ストレージかと思います。
ただ、非常に短い期間の一時保持であったり、Muleアプリケーションの再起動を考慮しなくても良いようなケースの場合、ワーカー内の作業領域を利用することも出来ます。(/tmpの利用は、推奨にはなりませんのでご注意ください!!!)
/tmp領域
各CloudHubワーカーは、EC2インスタンスで構築されており、OSおよびMule Runtimeそして稼働させるMuleアプリなどで構成されています。この時、ワーカーサイズ毎にパーティションが決められています。
注意点としては、上記の製品ドキュメントに記載された値には、OSやMule Runtime、ログ等も含まれる為、/tmpフォルダに割り当てられた容量はより小さなものとなるという事です。
また、現在、FTPやFile、HTTP、Salesforce連携など、様々な場所でストリーミングオプションが利用可能となっています。
このストリーミングオプションを利用することでデータの複数回の利用が可能となりますが、この時、/tmp領域には一時データファイルが作成されることになり領域を消費しますので注意が必要です。
また、Batchを利用した場合も、/tmp領域に一時的にデータが格納されることになりますので、
大量のデータを取り扱い場合は注意が必要となります。
/tmpへのアクセス
CloudHubの/tmpフォルダには、Fileモジュールを利用してアクセスすることが出来ます。
Fileモジュールは下記の通り、各種操作が用意されています。
例えば、/tmpフォルダに存在するファイルを一覧するには、下記のようにフローを組みます。
尚、ファイルマッチングルールを指定しない場合、内部プロセスで利用中のファイルにアクセスしようとして失敗します。
ここでは、下記のようにMin sizeを指定することで回避しています。
実行すると、下記のように結果が取得されます。