4ステップで始めてみた最新MQ Pulsar

More than 1 year has passed since last update.


前置き

先週の土曜日にオープンソースカンファレンスに遊びに行った際に、今年9月に公開されたOSSのMQ(Message Queue)であるPulsarの話を聞くことができ、以前から少し気になっていたので使ってみた。Yahoo! Inc.の方が「どうして我々はPulsarを作ったのか?」や「主な特徴や運用実績」などを"英語"で説明して頂いた。とりあえず、Pulsarとは一言でいうと、「スケーラブルで低レイテンシーなPub/Sub メッセージングシステム」!よくわからない。

詳しい紹介は「ハイパフォーマンスでスケーラブルなメッセージングシステム:Pulsarの紹介」に任せるとして、ここでは最低限の情報のみ記述します。以下私の認識なので、間違っていたらごめんなさい。


最低限のPulsar情報


  • MQとは高速にメッセージ(文字列)をやり取りする仕組み

  • Apache Camel: ActiveMQ も同様のMQの機能を持つOSS

  • コンポーネントとして以下の3つが登場人物


    • Broker(ブローカー)

    • Publisher(パブリッシャー)または、Producer(プロデューサー)

    • subscriber(サブスクライバー)または、Consumer(コンシューマー)



  • PulsarはProducer,Consumerと呼んでいるので、そちらをここでは使用する。役割は以下の通り。


    • Broker:メッセージを仲介する人

    • Producer:メッセージを送る人

    • Consumer:メッセージを受け取る人



  • MQを利用するとメッセージの送り手と受け手の関係が、1対1でなく、N対Nにすることができる

ソースコードはGitHub https://github.com/yahoo/pulsar


使ってみる

オープンソースカンファレンスで頂いた資料に「Pulsarの利用はかんたん4ステップ」と書かれているのでとりあえずそれをやってみる。

※注意:java8をインストールする必要がありました。


1. GitGubからパッケージをダウンロードして展開し、Standalone serverを起動します。

$ curl -L -O https://github.com/yahoo/pulsar/releases/download/v1.15.2/pulsar-1.15.2-bin.tar.gz

$ tar xvfz pulsar-1.15.2-bin.tar.gz
$ ./pulsar-1.15.2/bin/pulsar standalone


2. 別ターミナルを立ち上げてConsumerを起動します。

$ cd pulsar-1.15.2/bin/

$ ./pulsar-client consume -s 'sub' 'persistent://sample/standalone/ns1/my-topic'


3. さらに別のターミナルを立ち上げて、Producerを起動しメッセージを送信します。

$ cd pulsar-1.15.2/bin/

$ ./pulsar-client produce -m 'Hello Pulsar!' 'persistent://sample/standalone/ns1/my-topic'


4. Consumer側のターミナルに先ほどProducerから送信したメッセージが表示されます。

----- got message -----

Hello Pulsar!
2016-11-10 14:49:54,387 - INFO - [main:PulsarClientImpl@302] - Client closing. URL: http://localhost:8080/
2016-11-10 14:49:54,695 - INFO - [main:ConsumerImpl@571] - [persistent://sample/standalone/ns1/my-topic] [sub] Closed consumer
2016-11-10 14:49:54,838 - INFO - [main:CmdConsume@154] - 1 messages successfully consumed
2016-11-10 14:49:54,847 - INFO - [pulsar-client-io-1-1:ClientCnx@94] - [id: 0x9ca18431, L:/127.0.0.1:49311 ! R:localhost.localdomain/127.0.0.1:6650] Disconnected

java8をインストール必要があり、standaloneを立ち上げる際にはじめエラーが出たが、思ったよりは簡単だった。

自宅に一度brokerであるpulsar standaloneサーバを立てておけばいろいろできそう?いろんなセンサ情報をproduceでとりあえずbrokerに投げといて、DBに保存するなり、その場で処理するなりはconsumeで実装すると、、、夢は広がる!でも、普通のMQTTのbrokerでもいい気がする。まぁ登壇者によると、高機能で高信頼性らしいから今後何かに使用してみようと思う。デメリットとしては、現在OSSの日本語ドキュメントがない。新しい物好きの方は是非お試しあれ!


動作環境メモ

上記のコマンドは、windows上のvagrantで起動したCentOS6.4で動かしてみました。virtualbox上のubuntuではうまくいかなかった。virtualbox調子悪い気がする。