/pulsar-client-dotnet

Apache Pulsar native client for .NET (C#/F#/VB)

Primary LanguageF#MIT LicenseMIT

pulsar-client-dotnet

Pulsar.Client

.NET Core Windows .NET Core Ubuntu

Contributions and stars ★ are most welcome!

Pulsar.Client nuget | Pulsar.Client.Otel nuget

Supported pulsar cluster versions: 2.4+

Find examples of usage in /examples folder. We are trying to keep api similar to the Java client, so please take a look at it's documentation to understand possible options available. You can also join telegram chat https://t.me/pro_pulsar for further discussions.

Features list (based on Client Feature Matrix):

  • Basic Producer/Consumer API
  • Partitioned topics
  • Batching
  • Chunking
  • Compression
  • TLS
  • Authentication (token, tls, oauth2)
  • Reader API
  • Proxy Support
  • Effectively-Once
  • Schema (All types, Multi-version)
  • Consumer seek
  • Multi-topics consumer
  • Topics regex consumer
  • Compacted topics
  • User defined properties
  • Reader hasMessageAvailable
  • Hostname verification
  • Multi Hosts Service Url
  • Key_shared subscription
  • Key based batcher
  • Negative Acknowledge
  • Delayed/scheduled messages
  • Dead Letter Policy
  • Interceptors
  • Transactions
  • Statistics
  • End-to-end Encryption
  • SubscriptionInitialPosition
  • Cumulative Ack
  • Batch-Index Ack
  • SNI Routing
  • Table view

Quick contributing guide

Common steps before building

  • Fork and clone locally
  • Install dotnet tools: dotnet tool restore
  • Restore packages: dotnet restore

MacOS steps before building:

  • Install Snappy: brew install snappy
  • Install Libzstd: brew install zstd

Ubuntu steps before building:

  • Install Snappy: sudo apt-get install -y libsnappy-dev
  • Install Libzstd: sudo apt-get install -y libzstd-dev

Building and Testing

  • Build the solution: dotnet build (dotnet core sdk required) This will install required tools and then you can use any IDE to build solution
  • Make your modifications
  • Run unit tests: cd tests/UnitTests && dotnet test
  • (Optional) If changes are made in Client logic, run Integration tests. Before running do the following
    1. Install pulsar cluster:
      • MacOS guide:
      • brew tap streamlio/homebrew-formulae
      • brew install streamlio/homebrew-formulae/pulsar
      • brew install streamlio/homebrew-formulae/bookkeeper
      • brew services start pulsar
      • brew services start bookkeeper
    2. Run commands in /tests/IntegrationTests/commands.txt
    3. Change pulsarAddress in Common.fs to point your pulsar cluster
    4. Ensure public/default namespace with default settings
    5. Ensure public/retention namespace with time or storage size retention configured
  • Send a Pull Request

Maintaners

  • @Lanayx (only maintaining). If you want me to implement new features, this can be arranged on a paid basis, please PM in Telegram