9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

メッセージングシステム Pulsar を使ってみる

Last updated at Posted at 2016-12-10

概要

メッセージングシステムについて調べていて見つけたので試してみる。

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となります。
pulsar-movie-gif.gif

まとめ

  • 簡単にメッセージングシステムを実感することができた。
  • サポートされているのはまだJavaだけ。
  • あとでCLIからではなくJavaでも試してみる。
  • 非同期的なシステムの構築はレスポンス的な部分として、キューイングシステムは落とせない大切な情報(決済情報など?)にも有用的に活用できそう?
  • 他のメッセージングシステムとの差も理解を深めたい。
9
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
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?