はじめに
こんにちは。
本稿では、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を使ったメッセージの送信を行いました。
今回、シンプルなメッセージを作成して試しましたが、他にも様々なオプションをメッセージに付与することができます。
公式ドキュメントが参考になるかと思います。