s's-nook:

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

参考

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'
広告