{"id":13811480,"url":"https://github.com/apache/pulsar-dotpulsar","last_synced_at":"2026-01-30T13:44:42.070Z","repository":{"id":38366132,"uuid":"156590059","full_name":"apache/pulsar-dotpulsar","owner":"apache","description":"The official .NET client library for Apache Pulsar","archived":false,"fork":false,"pushed_at":"2025-05-08T07:06:41.000Z","size":14172,"stargazers_count":254,"open_issues_count":24,"forks_count":72,"subscribers_count":43,"default_branch":"master","last_synced_at":"2025-05-10T17:16:40.929Z","etag":null,"topics":["dotnet","event-streaming","messaging","pubsub","pulsar","queuing","streaming"],"latest_commit_sha":null,"homepage":"https://pulsar.apache.org/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apache.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-11-07T18:22:16.000Z","updated_at":"2025-05-08T07:06:44.000Z","dependencies_parsed_at":"2023-02-16T18:31:31.700Z","dependency_job_id":"766d7076-94cf-4e36-aef6-fbc359d6d2af","html_url":"https://github.com/apache/pulsar-dotpulsar","commit_stats":{"total_commits":428,"total_committers":30,"mean_commits":"14.266666666666667","dds":0.4369158878504673,"last_synced_commit":"64b05cfc47cdf1580a3ae7a063390762ff8ba1d3"},"previous_names":["danske-commodities/dotpulsar"],"tags_count":88,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fpulsar-dotpulsar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fpulsar-dotpulsar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fpulsar-dotpulsar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fpulsar-dotpulsar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/pulsar-dotpulsar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253845753,"owners_count":21973286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotnet","event-streaming","messaging","pubsub","pulsar","queuing","streaming"],"created_at":"2024-08-04T04:00:21.932Z","updated_at":"2025-12-16T10:16:08.867Z","avatar_url":"https://github.com/apache.png","language":"C#","readme":"# DotPulsar\n\n![CI - Unit](https://github.com/apache/pulsar-dotpulsar/workflows/CI%20-%20Unit/badge.svg)\n\nThe official .NET client library for [Apache Pulsar](https://pulsar.apache.org/).\n\nDotPulsar is written entirely in C# and implements Apache Pulsar's [binary protocol](https://pulsar.apache.org/docs/en/develop-binary-protocol/).\n\n## What's new?\n\nHave a look at the [changelog](CHANGELOG.md).\n\n## Getting Started\n\nLet's take a look at a \"Hello world\" example, where we first produce a message and then consume it. Note that the topic and subscription will be created if they don't exist.\n\nFirst, we need a Pulsar setup. See [Pulsar docs](https://pulsar.apache.org/docs/getting-started-home/) for how to set up a local standalone Pulsar instance.\n\nInstall the NuGet package [DotPulsar](https://www.nuget.org/packages/DotPulsar/) and run the follow code example:\n\n```csharp\nusing DotPulsar;\nusing DotPulsar.Extensions;\n\nconst string myTopic = \"persistent://public/default/mytopic\";\n\n// connecting to pulsar://localhost:6650\nawait using var client = PulsarClient.Builder().Build();\n\n// produce a message\nawait using var producer = client.NewProducer(Schema.String).Topic(myTopic).Create();\nawait producer.Send(\"Hello World\");\n\n// consume messages\nawait using var consumer = client.NewConsumer(Schema.String)\n    .SubscriptionName(\"MySubscription\")\n    .Topic(myTopic)\n    .InitialPosition(SubscriptionInitialPosition.Earliest)\n    .Create();\n\nawait foreach (var message in consumer.Messages())\n{\n    Console.WriteLine($\"Received: {message.Value()}\");\n    await consumer.Acknowledge(message);\n}\n```\n\nFor a more in-depth tour of the API, please visit the [Wiki](https://github.com/apache/pulsar-dotpulsar/wiki).\n\n## Supported features\n\n- [X] Service discovery\n- [X] Automatic reconnect\n- [X] TLS connections\n- [X] Pulsar Proxy\n- [X] Producer - send with custom metadata\n- [X] Producer - send with event time, sequence id, and delayed message delivery\n- [X] Producer - send with key and ordering key\n- [X] Producer - partitioned topics\n- [X] Consumer - subscription with initial position and priority level\n- [X] Consumer - subscription types exclusive, shared, failover, and key shared\n- [X] Consumer - multi-topic subscriptions\n- [X] Consumer - receive and single + cumulative acknowledge\n- [X] Consumer/Reader - seek on message-id and publish time\n- [X] Consumer - unsubscribe\n- [X] Consumer - compacted topics\n- [X] Consumer - partitioned topics\n- [X] Reader API\n- [X] Read/Consume/Acknowledge batched messages\n- [X] Telemetry\n    - [Tracing](https://github.com/apache/pulsar-dotpulsar/wiki/Tracing)\n    - [Metrics](https://github.com/apache/pulsar-dotpulsar/wiki/Metrics)\n- [X] Authentication\n    - TLS Authentication\n    - JSON Web Token Authentication\n    - Custom Authentication\n- [X] [Message compression](https://github.com/apache/pulsar-dotpulsar/wiki/Compression)\n    - LZ4\n    - ZLIB\n    - ZSTD\n    - SNAPPY\n- [X] Schemas\n    - Boolean\n    - Bytes (using byte[] and ReadOnlySequence\\\u003cbyte\\\u003e)\n    - String (UTF-8, UTF-16, and US-ASCII)\n    - INT8, INT16, INT32, and INT64\n    - Float and Double\n    - Time (using TimeSpan)\n    - Timestamp and Date (using DateTime)\n\nFor a horizontal comparison with more language-specific clients, see [Client Feature Matrix](https://pulsar.apache.org/client-feature-matrix/).\n\n## Roadmap\n\nHelp prioritizing the roadmap is most welcome, so please reach out and tell us what you want and need.\n\n## Join Our Community\n\nApache Pulsar has a [Slack instance](https://pulsar.apache.org/contact/), and there you'll find us in the #dev-dotpulsar channel.\n\n## Versioning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/apache/pulsar-dotpulsar/tags).\n\n## Authors\n\n* **Daniel Blankensteiner** - *Initial work* - [Danske Commodities](https://github.com/DanskeCommodities)\n\nContributions are welcomed and greatly appreciated. See also the list of [contributors](https://github.com/apache/pulsar-dotpulsar/contributors) who participated in this project. Read the [CONTRIBUTING](CONTRIBUTING.md) guide for how to participate.\n\nIf your contribution adds Pulsar features for C# clients, you need to update both the [Pulsar docs](https://pulsar.apache.org/docs/client-libraries/) and the [Client Feature Matrix](https://pulsar.apache.org/client-feature-matrix/). See [Contribution Guide](https://pulsar.apache.org/contribute/site-intro/#pages) for more details.\n\n## License\n\nThis project is licensed under [Apache License, Version 2.0](https://apache.org/licenses/LICENSE-2.0).\n","funding_links":[],"categories":["Clients"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fpulsar-dotpulsar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fpulsar-dotpulsar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fpulsar-dotpulsar/lists"}