Spring XD の環境が整ってきたので、ここからは実際に使ってみます。
環境
- Ubuntu 14.04
- Nginx 1.4.6
- Java 1.8.0_66
- Spring XD 1.3.0.RELEASE
- Flo for Spring XD 1.0.0 GA (flo-spring-xd-admin-ui-client-1.3.0.RELEASE)
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
$ uname -a
Linux 133-130-119-232 3.16.0-51-generic #69~14.04.1-Ubuntu SMP Wed Oct 7 15:32:41 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ nginx -v
nginx version: nginx/1.4.6 (Ubuntu)
$ java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
$ ./xd-shell
_____ __ _______
/ ___| (-) \ \ / / _ \
\ `--. _ __ _ __ _ _ __ __ _ \ V /| | | |
`--. \ '_ \| '__| | '_ \ / _` | / ^ \| | | |
/\__/ / |_) | | | | | | | (_| | / / \ \ |/ /
\____/| .__/|_| |_|_| |_|\__, | \/ \/___/
| | __/ |
|_| |___/
eXtreme Data
1.3.0.RELEASE | Admin Server Target: http://localhost:9393
Welcome to the Spring XD shell. For assistance hit TAB or type "help".
xd:>
以前セットアップした環境を引き続き利用します。
- Spring XD のセットアップを試してみた話
- Flo for Spring XD でグラフィカルに XD をあつかう話
- Spring XD のフロントに Nginx を置いたらハマった話
- Spring XD の認証機能を有効化した話
ストリームの作成とデプロイ
さっそく試してみます。
今回はストリーム処理で、Gmail の受信トレイに届いたメールを、リアルタイムで HipChat に届けてみようと思います。
作成したサーバーの Admin UI から、[STREAMS] > [Create Stream] とメニューをたどっていきます。
ローカルにサーバーを立てた場合、http://localhost:9393/admin-ui/#/streams/create にアクセスしても目的の画面に到達します。
画面左の source グループからは mail
を、processor グループからは http-client
を、sink グループからは null
を、それぞれ選択して、編集エリアへドラッグします。
それぞれの箱の端についている、黒い点同士を重ねるように配置していきます。
編集したい箱をクリックし、編集エリア下部でプロパティを設定していきます。
設定値はそれぞれ以下のとおりです。
name | value | note |
---|---|---|
delete | false | |
host | imap.gmail.com | |
username | {user-name}%40gmail.com | @ は %40 にエスケープ |
port | 993 | |
password | {user-password} | |
protocol | imaps | Gmail の場合 IMAPS 必須 |
outputType | text/plain | |
maxMessages | 10 |
http-client
name | value | note |
---|---|---|
url | '''https://api.hipchat.com/v2/room/{room-id}/notification?auth_token={token}''' |
URL はシングルクオート3つで囲む |
null
(設定不要)
ここまでできたら、いよいよストリームを作成・デプロイしてみます。
[Create Stream] ボタンをクリックして、ストリームに名前をつけたら、"Deploy stream(s)" にチェックを入れて、[Create] します。
ストリームの動作確認
デプロイしたストリームが正しく動作するか確認してみます。
うまく作成できていれば、設定した Gmail アカウントにメールが着信したタイミングで、HipChat にメッセージが連携されるはずです。
即座に連携されていることが確認できますね!
設定はこれで問題なさそうです。
まとめ
Spring XD を利用すると、こんな具合に簡単にストリーム処理を作成できます。
これまでこの手の技術の多くは、ビッグデータまわりで多く利用されてきたように感じますが、最近では Reactive というキーワードとともに、ビッグデータ以外の領域でも利用が広がってきているようです。
今回のデモを通じて、かなり いろいろなものを連携できることが実感できたかと思います。
より実務的な利用を考えると、ログ解析や、その連携などのリアルタイム化あたりが、現実的な利用シーンとなるでしょうか。
ローカル・リモート問わず、実に様々なリソースを連携できる Spring XD。
今後は Spring Cloud Data Flow というプロダクトにリファクタリングされ、プロジェクトが継続していくようです。
ただし Spring Cloud Data Flow は、まだ Beta リリースのみのため、当面は Flo 含めた全機能を利用したい場合は、Spring XD を選択することになります。
まだいろいろ遊べそうなので、引き続き追いかけてみようと思います。