はじめに
こんにちは。
本稿では、PulsarのC#クライアントライブラリ(DotPulsar)(以下、DotPulsar)を使って、簡単なメッセージの送受信をしていきます。
今回は、Windows10上に以下のサーバとクライアントを構築します。
-
サーバ
- Pulsar in Docker (standaloneモード) v2.9.1
-
クライアント
- .NET SDK 6.0.101(x64)
- DotPulsar 2.0.1
サーバの準備
PowerShellを開き、以下のコマンドを実行して、
Docker上に、Pulsarのstandaloneモードを構築します。
PS> docker run -it -p 6650:6650 -p 8080:8080 `
--mount source=pulsardata,target=/pulsar/data `
--mount source=pulsarconf,target=/pulsar/conf `
apachepulsar/pulsar:2.9.1 bin/pulsar standalone -nss -nfw
クライアントの準備
Consumer
PS> dotnet new console -o Consumer
PS> cd Consumer
PS> dotnet add package DotPulsar
Program.csを開いて、以下のコードに修正する。
using DotPulsar;
using DotPulsar.Extensions;
using System.Text;
using System.Buffers;
await using var client = PulsarClient.Builder()
.ServiceUrl(new Uri("pulsar://localhost:6650")).Build();
await using var consumer = client.NewConsumer()
.SubscriptionName("MySubscription")
.Topic("persistent://public/default/mytopic")
.Create();
await foreach (var message in consumer.Messages())
{
Console.WriteLine("Received: " + Encoding.UTF8.GetString(message.Data.ToArray()));
await consumer.Acknowledge(message);
}
Producer
PS> dotnet new console -o Producer
PS> cd Producer
PS> dotnet add package DotPulsar
Program.csを開いて、以下のコードに修正する。
using DotPulsar;
using DotPulsar.Extensions;
using System.Text;
using System.Buffers;
await using var client = PulsarClient.Builder()
.ServiceUrl(new Uri("pulsar://localhost:6650")).Build();
await using var producer = client.NewProducer()
.Topic("persistent://public/default/mytopic")
.Create();
var text = "Hello World";
_ = await producer.Send(Encoding.UTF8.GetBytes(text));
Console.WriteLine("Sent: " + text);
メッセージの送受信
Consumer側の画面
PS> dotnet run
Producer側の画面
PS> dotnet run
と実行すると、ProducerからConsumerにメッセージが流れ、
Consumer側の画面にReceived: Hello World
と表示されます。
おわりに
本稿では、DotPulsarを使ったメッセージの送受信を行いました。
今回、シンプルなProducer、Consumerを作成して試しましたが、他にも様々な機能が実装されています。
公式ドキュメントが参考になるかと思います。