あけましておめでとうございます。2016年、最初のエントリになります。
今回は、InfinispanのJavaScriptクライアント、しかもHot Rod向けのものが登場していたようなので、こちらを試してみたいと思います。
参考にするドキュメントは、以下となります。
Javascript Tutorial - Infinispan
js-client/README.md at master · infinispan/js-client · GitHub
まあ、情報はこれくらいなので、あとは困ったらソースコードを読みましょう、的な。
準備
まず、必要な条件としては、Infinispan Serverがすでにあること(こちらは割愛、起動済みとします)。
クライアント側には、Node.jsをインストールしておいてください。
で、適当なディレクトリでnpm init後に、infinispan用のモジュールをインストールします。
$ npm init
$ npm install --save infinispan
これでインストールされるinfinispanモジュールは、現時点では0.0.1です。
"dependencies": { "infinispan": "0.0.1" }
まだお試しな感じでしょうねぇ…。
使ってみる
それでは、READMEに沿ってサンプルを書いてみます。
[js-client/README.md at master · infinispan/js-client · GitHub
index.js
var infinispan = require("infinispan"); var connected = infinispan.client(11222, "localhost"); connected.then(function(client) { console.log("connected."); var putted1 = client.put("key1", "value1"); var getted1 = putted1.then(function() { return client.get("key1").then(function(value) { console.log("key1 = " + value); }); }); var replaceAndPut = getted1.then(function() { return client .replace("key1", "value100") .then(function() { return client.put("key2", "value2"); }); }); var getted2 = replaceAndPut.then(function() { return client .get("key1") .then(function(value) { console.log("key1 = " + value); }) .then(function() { return client.get("key2").then(function(value) { console.log("key2 = " + value); }); }) }); var putAll = getted2.then(function() { return client.putAll([ { key: "key3", value: "value3" }, { key: "key4", value: "value4" }, { key: "key5", value: "value5" } ]) }); var getAll = putAll.then(function() { return client .getAll(["key1", "key2", "key3", "key4", "key5"]) .then(function(entries) { console.log("entries = " + JSON.stringify(entries)); }); }); return getAll.then(function() { console.log("clear"); return client.clear(); }).finally(function() { return client.disconnect().then(function() { console.log("disonnected"); }); }); });
requireしてから、接続先ホスト名 or IPアドレスとポート、そしてポートを指定して接続するわけですが
var infinispan = require("infinispan"); var connected = infinispan.client(11222, "localhost");
プログラムは、基本的にPromiseを使って書くことになるので、then...みたいな感じになるようです。
初Node.jsなので、このあたりの作法はまだ慣れないですね…。
Hot Rodを使ったことがあれば基本的な操作はサンプルコードを見ればわかりそうな感じですが、ちゃんと定義を見たい場合は以下のソースを見るとよいでしょう。
https://github.com/infinispan/js-client/blob/v0.0.1/lib/infinispan.js
今回書いたサンプルを実行すると、コンソールログはこんな感じになります。
$ node index.js connected. key1 = value1 key1 = value100 key2 = value2 entries = [{"key":"key2","value":"value2"},{"key":"key5","value":"value5"},{"key":"key4","value":"value4"},{"key":"key3","value":"value3"},{"key":"key1","value":"value100"}] clear disonnected
起動が早いなぁと…。
気になること
現在のJavaScriptクライアントでまず気になるのは、Cacheの名前が指定できそうな感じがしないことでしょうか。デフォルトのCacheを使ってそうな気がしますが…?
あと、Javaクライアントに比べると、やっぱり現時点では使える機能はだいぶ少なさそうな気がします。
終わりに
InfinispanのJavaScriptクライアントを試してみましたが、Node.jsまわりには全然慣れていないので当面慣れる感じがしないですね。
とはいえ、気になるテーマではあるので、今後もメンテナンスされるのであれば見ておこうかなぁと。
※現在メンテナンスが続けられているHot Rod Clientって…
今回作成したコードは、こちらに置いています。
https://github.com/kazuhira-r/infinispan-getting-started/tree/master/remote-js-client