emqx/pulsar-client-erl
54.8
Weak · 17 September 2026
3.8k
lines of production code
Erlang
primary language
1
measurement over time
What this system is
This system is an Erlang client library for Apache Pulsar, designed to manage supervised connections for producing and consuming messages. It provides high-level APIs for batch and single-message sending, along with metrics integration and protocol optimizations for reduced overhead. The project also includes comprehensive testing suites, including interoperability validation with Python consumers, and is structured as an Elixir application with defined external dependencies.
Features
Initial release of the Erlang Apache Pulsar client library
This change introduces the \pulsar\ application, providing a complete Erlang client for Apache Pulsar. It includes core modules for managing supervised client connections (\pulsar\_client\_manager\), producing messages (\pulsar\_producers\, \pulsar\_producer\), and consuming messages (\pulsar\_consumers\, \pulsar\_consumer\). The library exposes high-level APIs for sending and synchronous sending of message batches, as well as starting and stopping supervised producers and consumers. It also incorporates generated protocol definitions (\pulsar\_api\), a metrics module (\pulsar\_metrics\) for telemetry integration, and a supervision tree (\pulsar\_app\, \pulsar\_client\_sup\, \pulsar\_consumers\_sup\) to manage the lifecycle of client workers.
src · high confidence
Behavioural changes
Add internal header definitions for metrics and producer messaging
New header files have been added to the include directory to support internal implementation details. The pulsar.hrl file defines the ETS table name used for metrics (pulsar\_metrics), while pulsar\_producer\_internal.hrl defines the message structure for producer send requests, enabling consistent internal communication patterns.
include · high confidence
Optimized single-message production when batch size is 1
When the producer's \batch\_size\ is configured to 1, messages are now sent as single-message produce requests without batch headers, reducing protocol overhead. This change utilizes the Pulsar protocol's native single-message format, where the \partition\_key\ is included directly in the \MessageMetadata\ instead of using \SingleMessageMetadata\ headers.
(repo-wide) · high confidence
Test coverage
Added comprehensive Common Test suites and utilities for Pulsar client and producer; Added interop test for Erlang producer and Python consumer with Key\_Shared strategy.
Dependencies
Initial Elixir project configuration with dependency definitions
The project now includes a mix.exs file that defines the Elixir application structure, specifying Elixir version 1.13+ and listing external dependencies such as telemetry 1.3.0, crc32cer, murmerl3, snappyer, replayq, snabbkaffe, and lc, along with development-only tools like redbug.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 55.
Lenses
- Code Health 93
- Architecture 97
- Maturity 39
- Readiness 43
- Security 85
- Event Sourcing 100
Changes since last survey
- 300 commits — 166 feature/other, 134 fixes
By area
- (root) — 71 commits
- src/pulsar_producer.erl — 55 commits
- (repo) — 45 commits
- src/pulsar_client.erl — 39 commits
- src/pulsar.appup.src — 24 commits
- src/pulsar_consumer.erl — 9 commits
- test/pulsar_SUITE.erl — 8 commits
- src/pulsar_protocol_frame.erl — 7 commits
- .github/workflows — 6 commits
- src/pulsar_producers.erl — 4 commits
- src/pulsar.app.src — 3 commits
- src/pulsar_client_manager.erl — 3 commits
- src/pulsar_socket.erl — 3 commits
- src/pulsar.erl — 2 commits
- src/pulsar_client_sup.erl — 2 commits
- src/pulsar_consumers.erl — 2 commits
- src/pulsar_producers_sup.erl — 2 commits
- src/pulsar_socket_writer.erl — 2 commits
- test/interop — 2 commits
- test/pulsar_producer_SUITE.erl — 2 commits
Notable commits
- fix: Fix
- fix: Fix Same topic
- fix: Fix badmatch
- fix: Fix batch fail
- fix: Fix batch messgae consumed fail
- fix: Fix batch send message bug
- fix: Fix conflicts
- fix: Fix consumer receives the message bug
- fix: Fix next_request_id fail
- fix: Fix parse message fail
- fix: Fix partition is 0
- fix: Fix pulsar set flow fail
- fix: Fix sticky package problem
- fix: Fix string to binary
- fix: Merge pull request #33 from emqx/fix-tls-topic-lookup
- fix: Merge pull request #37 from emqx/fix-fn-clause-idle
- fix: Merge pull request #41 from emqx/fix-coveralls-branch
- fix: Merge pull request #42 from emqx/fix-relup-070
- fix: Merge pull request #47 from emqx/fix-pulsar-down-lookup
- fix: Merge pull request #50 from emqx/fix-ci-after-down-lookup
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
emqx/pulsar-client-erl was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 17 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit fda5ce85e4fa9608df9ca30ee1dce43e376f9339 — the exact code this score is about.
- Scored under rubric-2026.09.12 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-f94092f054c1.