LoginSignup
2
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-11-10

前置き

先週の土曜日にオープンソースカンファレンスに遊びに行った際に、今年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調子悪い気がする。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4