概要
メッセージングシステムについて調べていて見つけたので試してみる。
Yahoo!inc.が提供するOSSのメッセージングシステム
https://github.com/yahoo/pulsar
常駐型プロセスを使って高速なメッセージングのやり取りが可能っぽい。
Pulsarとは
下記にわかりやすくまとまってた。
https://techblog.yahoo.co.jp/infrastructure/pulsar_introduction/
詳しくは、上記の記事を見てもらえればと思います。
ざっくりな感じで
- メッセージングシステム
- 非同期的なやり取りが可能
- メッセージは
- producer => メッセージ送信者
- consumer => メッセージ受信者
- topic => メッセージを管理するグループ
producerがnewsというトピックで“円安”というメッセージを送るとnewsというトピックを受け取る準備をしているconsumerが“円安”メッセージを受信する。
とりあえず使ってみる
tar.gzファイルを落としてくる(現時点では1.15.2が最新っぽい)
$ wget https://github.com/yahoo/pulsar/releases/download/v1.15.2/pulsar-1.15.2-bin.tar.gz
最新バージョンは下記から確認してみてください。
https://github.com/yahoo/pulsar/releases
解凍
$ tar xvfz pulsar-1.15.2-bin.tar.gz
pulsarをstandaloneモードで立ち上げます。
PulsarにはStandalone(Broker, BookKeeper, Zookeeperが一つのサーバー上ですべて起動する)モードが用意されています。
$ cd pulsar-1.15.2
$ bin/pulsar standalone
次に、consumerプロセスを立ち上げます。
$ bin/pulsar-client consume -s 'sub' 'persistent://sample/standalone/ns1/my-topic'
次に、producerプロセスでメッセージを送ってみます。
$ bin/pulsar-client produce -m 'hello' 'persistent://sample/standalone/ns1/my-topic'
すると、producerから送った hello というメッセージがconsumer側に届きました。
下記のgifは左側の画面がconsumer,右側の画面がproducerとなります。
まとめ
- 簡単にメッセージングシステムを実感することができた。
- サポートされているのはまだJavaだけ。
- あとでCLIからではなくJavaでも試してみる。
- 非同期的なシステムの構築はレスポンス的な部分として、キューイングシステムは落とせない大切な情報(決済情報など?)にも有用的に活用できそう?
- 他のメッセージングシステムとの差も理解を深めたい。