Apache Pulsarをローカルで立ち上げ、Spring for Apache Pulsarを動作確認するメモ
目次
Apache Pulsarとは
リアルタイムのデータストリーミングとメッセージングを扱うためのオープンソースの分散メッセージングシステム。Apache Kafkaに比べ、柔軟性や拡張性が求められるユースケースに適しています。マルチテナントの運用やスケーラブルなストレージ管理が必要な場合に特に有利。
トピック名が階層化されておりマルチテナントしやすい(プロパティ/ネームスペース/デスティネーション でトピック名が階層化されている)
また、ジオレプリケーション機能が備わっている。
springプロジェクトでは、2022年からapache pulsarのサポートを開始しているhttps://spring.io/blog/2022/08/16/introducing-experimental-spring-support-for-apache-pulsar
参考
-
公式doc
Welcome to the Apache Pulsar documentation portal | Apache PulsarExplore the Apache Pulsar documentation and join the knowledgeable Pulsar community.pulsar.apache.org -
Apache PulsarのマネージメントサービスであるAstra Streamingを提供するDataStax者の方による記事。メッセージング及びストリーミングテクノロジーの概観から始まり、Apache Kafkaとの違いを取り上げながらApache Pulsarについてわかりやすく解説されている。
次世代メッセージング/ストリーミングプラットフォーム Apache Pulsar紹介 ~Apache Kafkaに比べて何が進歩したのか? - Qiitaはじめに本稿は、次の3部構成からなります。Apache Pulsarを扱う前に、メッセージング及びストリーミングテクノロジーの概観からはじめます。次に、Apache Pulsarの解説に進みま…qiita.com -
Yahoo!デベロッパーネットワークが公開している以下のスライド群
https://www.docswell.com/tag/Apache Pulsar -
baeldungの解説
https://www.baeldung.com/apache-pulsar
https://www.baeldung.com/spring-boot-apache-pulsar
Apache Pulsarをローカルで立ち上げ、Spring for Apache Pulsarを動作確認する
pulsarをsingle nodeで立ち上げる
公式のApache Pulsar distributionをダウンロードして解凍
wget https://archive.apache.org/dist/pulsar/pulsar-4.0.0/apache-pulsar-4.0.0-bin.tar.gz tar xvfz apache-pulsar-4.0.0-bin.tar.gz
解凍された プロジェクトに移動し、standalone pulsarをstartする
cd apache-pulsar-4.0.0 bin/pulsar standalone
参考: https://pulsar.apache.org/docs/4.0.x/getting-started-standalone/
トピックを作成する
bin/pulsar-admin topics create persistent://public/default/my-topic
※ pulsarは自動的に存在しないトピックを作成する機能があるが、あえて明示的に前もってトピックを作成している
spring の pulsar clientでメッセージのproduce/consumeする
spring initializr より、DependenciesにSpring for Apache Pulsar を選択してプロジェクトを作成する
@SpringBootApplication public class PulsarBootHelloWorld { public static void main(String[] args) { SpringApplication.run(PulsarBootHelloWorld.class, args); } @Bean ApplicationRunner runner(PulsarTemplate<String> pulsarTemplate) { return (args) -> pulsarTemplate.send("my-topic", "Hello Pulsar World!"); } @PulsarListener(subscriptionName = "hello-pulsar-sub", topics = "my-topic") void listen(String message) { System.out.println("Message Received: " + message); } }
※ pulsarはデフォルトのlocalhost:6650で実行されている想定のため、追加の設定はしていない
以下コマンドでメッセージを手動でproduceすることで動作確認できる
bin/pulsar-client produce my-topic --messages 'Hello Pulsar World from CLI'