The official .NET client library for Apache Pulsar.
DotPulsar is written entirely in C# and implements Apache Pulsar's binary protocol.
Have a look at the changelog.
Let's take a look at a "Hello world" example, where we first produce a message and then consume it.
Install the NuGet package DotPulsar and copy/paste the code below (you will be needing using declarations for 'DotPulsar' and 'DotPulsar.Extensions').
const string myTopic = "persistent://public/default/mytopic";
await using var client = PulsarClient.Builder()
.Build(); //Connecting to pulsar://localhost:6650
var producer = client.NewProducer()
.Topic(myTopic)
.Create();
_ = await producer.Send(Encoding.UTF8.GetBytes("Hello World"));
var consumer = client.NewConsumer()
.SubscriptionName("MySubscription")
.Topic(myTopic)
.Create();
await foreach (var message in consumer.Messages())
{
Console.WriteLine("Received: " + Encoding.UTF8.GetString(message.Data.ToArray()));
await consumer.Acknowledge(message);
}
For a more in-depth tour of the API, please visit the Wiki.
- Service discovery
- Automatic reconnect
- TLS connections
- TLS Authentication
- JSON Web Token Authentication
- Producer send with custom metadata
- Producer send with event time, sequence id, and delayed message delivery
- Producer send with key and ordering key
- Producer for partitioned topics
- Consumer subscription with initial position and priority level
- Consumer subscription types exclusive, shared, failover, and key shared
- Consumer receive and single + cumulative acknowledge
- Consumer and Reader seek on message-id and publish time
- Consumer unsubscribe
- Consume compacted topics
- Reader API
- Read/Consume/Acknowledge batched messages
- Pulsar Proxy
- LZ4 message compression
- ZLIB message compression
- ZSTD message compression
- SNAPPY message compression
- Schemas
- Boolean
- Bytes (using byte[] and ReadOnlySequence<byte>)
- String (UTF-8, UTF-16, and US-ASCII)
- INT8, INT16, INT32, and INT64
- Float and Double
- Time (using TimeSpan)
- Timestamp and Date (using DateTime)
Help prioritizing the roadmap is most welcome, so please reach out and tell us what you want and need.
Apache Pulsar has a Slack instance and there you'll find us in the #dev-dotpulsar channel. Just waiting for you to pop by :-)
We use SemVer for versioning. For the versions available, see the tags on this repository.
- Daniel Blankensteiner - Initial work - Danske Commodities
See also the list of contributors who participated in this project.
This project is licensed under the Apache License Version 2.0 - see the LICENSE file for details.