LoginSignup
0
0

More than 1 year has passed since last update.

Pulsar RESTを使ってみた

Last updated at Posted at 2023-03-06

はじめに

こんにちは。

本稿では、Apache Pulsar(以下、Pulsar)のPulsar RESTを使って、簡単なメッセージの送信をしていきます。
Pulsar RESTでは、クライアントライブラリを使わずに、HTTPを使ってメッセージを送信することができます。
現在Pulsar RESTにはメッセージの受信は実装されていません。

今回は、MacOS上にPulsarサーバ(standaloneモード/v2.11.0)を構築し、そのサーバに向けてメッセージの送信を行います。
Pulsar standaloneモードを起動するにはJavaが必要になります。

サーバ構築

Pulsarのバイナリパッケージをダウンロードし、standaloneモードで起動します。

# Pulsarのバイナリパッケージのダウンロードと展開
$ wget https://archive.apache.org/dist/pulsar/pulsar-2.11.0/apache-pulsar-2.11.0-bin.tar.gz
$ tar xzvf apache-pulsar-2.11.0-bin.tar.gz
$ cd apache-pulsar-2.11.0

# Pulsar standaloneモードの起動
$ ./bin/pulsar standalone
.
.
.
{
  "c-standalone-fw-localhost-8080" : {
    "originalNumAssignments" : 0,
    "finalNumAssignments" : 0,
    "instancesAdded" : 0,
    "instancesRemoved" : 0,
    "instancesUpdated" : 0,
    "alive" : true
  }
}

# 上記のようなログが出れば構築完了

メッセージの送信

サーバが起動できたのでメッセージを送信していきます。
Producer(メッセージを送信する側)とConsumer(メッセージを受信する側)用にターミナルを2つ起動します。

まず、Consumerを起動してメッセージが流れてきたら受信するようにします。

# Consumer側のターミナル
# Consumerの起動
$ ./bin/pulsar-client consume -n 0 -s sub1 persistent://public/default/t1
.
.
.
2023-03-04T14:16:11,311+0900 [pulsar-client-io-1-1] INFO  org.apache.pulsar.client.impl.ConsumerImpl - [persistent://public/default/t1][sub1] Subscribed to topic on localhost/127.0.0.1:6650 -- consumer: 0

# 上記のようなログが出ればOK

次に、Producer側のターミナルで、curlを使ってメッセージを送信します。

# Producer側のターミナル
# メッセージの準備
$ cat messages.json
{
  "messages": [
    {
      "payload": "Hello World"
    },
    {
      "payload": "Hello World"
    },
    {
      "payload": "Hello World"
    }
  ]
}

# curlを使ってメッセージを送信
$ curl --location --request POST \
--header 'Content-Type: application/json' \
--data-raw "`cat messages.json`" \
'localhost:8080/topics/persistent/public/default/t1'

{"messagePublishResults":[{"messageId":"7:1:-1","errorCode":0,"schemaVersion":0},{"messageId":"7:2:-1","errorCode":0,"schemaVersion":0},{"messageId":"7:3:-1","errorCode":0,"schemaVersion":0}],"schemaVersion":0}

# 上記のようなログが出ればOK

すると、Consumer側のターミナルでメッセージが流れてきたことが確認できます。

# Consumer側のターミナル
----- got message -----
key:[null], properties:[], content:Hello World
----- got message -----
key:[null], properties:[], content:Hello World
----- got message -----
key:[null], properties:[], content:Hello World

おわりに

本稿では、Pulsar RESTを使ったメッセージの送信を行いました。

今回、シンプルなメッセージを作成して試しましたが、他にも様々なオプションをメッセージに付与することができます。
公式ドキュメントが参考になるかと思います。

参考URL

0
0
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
0
0