DotPulsar.Client.Api 0.1.17-preview

This is a prerelease version of DotPulsar.Client.Api.
dotnet add package DotPulsar.Client.Api --version 0.1.17-preview
                    
NuGet\Install-Package DotPulsar.Client.Api -Version 0.1.17-preview
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DotPulsar.Client.Api" Version="0.1.17-preview" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DotPulsar.Client.Api" Version="0.1.17-preview" />
                    
Directory.Packages.props
<PackageReference Include="DotPulsar.Client.Api" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DotPulsar.Client.Api --version 0.1.17-preview
                    
#r "nuget: DotPulsar.Client.Api, 0.1.17-preview"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DotPulsar.Client.Api@0.1.17-preview
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DotPulsar.Client.Api&version=0.1.17-preview&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=DotPulsar.Client.Api&version=0.1.17-preview&prerelease
                    
Install as a Cake Tool

DotPulsar.Client.Api

Standalone prototype of the old Apache Pulsar service-facing library style, backed by the official DotPulsar client.

This project intentionally ignores dashboard/metrics for now. The goal is a simple library that services can use directly in the familiar way:

  • configure Pulsar connection values
  • create tenants, namespaces, and topics through Pulsar admin APIs
  • publish messages
  • subscribe with raw async handlers
  • subscribe with batch semaphore async handlers

Timeouts

Timeouts are applied only to main I/O boundaries:

  • producer create: ProducerConfig.CreateProducerTimeout
  • producer send: ProducerConfig.SendTimeout
  • consumer create: ConsumerConfig.CreateConsumerTimeout
  • receive/move-next: ConsumerConfig.ReceiveOperationTimeout
  • acknowledge: ConsumerConfig.AckTimeout
  • negative acknowledge/redelivery: ConsumerConfig.NegativeAckTimeout
  • dispose: ConsumerConfig.DisposeTimeout / ProducerConfig.DisposeTimeout
  • business processing: ConsumerConfig.MessageProcessingTimeout
  • batch task join: ConsumerConfig.BatchProcessingTimeout

Internal helper methods are not wrapped one by one.

Registration

using ApachePulsar.Business.Bootstrapper;
using ApachePulsar.Common.Static;

PulsarConfigurations.PulsarConnectionString = "pulsar://localhost:6650";
PulsarConfigurations.PulsarAdminApi = "http://localhost:8080/admin/v2";
PulsarConfigurations.Token = null;

services.AddDotPulsarLibrary();

Resource Creation

Tenant, namespace, and topic creation are still done through admin APIs, not through DotPulsar:

await _tenantService.CreateTenant(new TenantConfig
{
    Tenant = "public",
    AllowedClusters = "standalone"
});

await _namespaceService.CreateNamespace(new NamespaceConfig
{
    Tenant = "public",
    Namespace = "default"
});

await _topicService.CreateTopic(new TopicConfig
{
    Tenant = "public",
    Namespace = "default",
    TopicName = "my-topic",
    Partitions = 0
});

Handler Shape

public sealed class MyHandler : BatchSemaphorePulsarHandlerAsync<MyMessage>
{
    protected override ConsumerConfig HandlerConfig => new()
    {
        TopicConfig = new TopicConfig
        {
            Tenant = "public",
            Namespace = "default",
            TopicName = "my-topic"
        },
        SubscriptionName = "my-sub"
    };

    protected override Task ConsumeAsync(MyMessage? obj, CancellationToken cancellationToken)
    {
        return Task.CompletedTask;
    }
}

Current Scope

Implemented:

  • DotPulsar client connection
  • token auth
  • producer publish
  • raw consumer handler
  • batch semaphore consumer handler
  • admin API resource services
  • boundary timeouts

Not implemented yet:

  • metrics/dashboard
  • duplicate tracking
  • heartbeat UI
  • full config parity with the old package
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on DotPulsar.Client.Api:

Package Downloads
MontyMobile.DotPulsar.Manager

Service-oriented Apache Pulsar management library backed by DotPulsar.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.17-preview 69 9/21/2026
0.1.16-preview 234 9/10/2026
0.1.15-preview 106 9/9/2026
0.1.13-preview 118 9/9/2026
0.1.12-preview 106 9/8/2026
0.1.11-preview 119 9/8/2026
0.1.10-preview 105 9/7/2026
0.1.9-preview 74 9/5/2026
0.1.7-preview 90 8/28/2026
0.1.6-preview 99 8/28/2026
0.1.5-preview 91 8/28/2026
0.1.4-preview 88 8/27/2026
0.1.3-preview 75 8/27/2026
0.1.2-preview 82 8/26/2026
0.1.1-preview 77 8/26/2026