explaingit

apache/pulsar

15,236JavaAudience · ops devopsComplexity · 5/5LicenseSetup · hard

TLDR

Apache Pulsar is a distributed messaging system, like a postal service for software, that moves millions of messages per second across services with geo-replication and multi-tenant isolation built in.

Mindmap

mindmap
  root((apache-pulsar))
    What it does
      Pub-sub messaging
      Millions of topics
      Real-time streaming
    Key Features
      Geo-replication
      Multi-tenancy
      Queue and stream
    Client Libraries
      Java Go Python
      Node.js .NET C++
    Operations
      REST admin API
      Load balancing
      Auth and quotas
    Audience
      Platform engineers
      Distributed systems
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build an event-driven microservices backbone that decouples producers and consumers at millions of messages per second.

USE CASE 2

Replace a messaging cluster with Pulsar to get built-in geo-replication between data centers without extra tooling.

USE CASE 3

Set up a multi-tenant messaging platform where different teams get isolated topics with their own authentication and quotas on one shared cluster.

USE CASE 4

Stream data between regions using Pulsar geo-replication for disaster recovery or globally distributed writes.

Tech stack

JavaGradleGoPythonC++Node.js.NET

Getting it running

Difficulty · hard Time to first run · 1h+

Requires running a Pulsar broker on JDK 21 plus ZooKeeper and BookKeeper, Docker Compose is the fastest path for local testing.

Use freely for any purpose, including commercial use, as long as you include the Apache 2.0 license notice.

In plain English

Apache Pulsar is a distributed pub-sub messaging system, a kind of postal service for software, where one part of an application publishes messages on a named channel (called a topic) and other parts subscribe to receive them. It is built to move very large amounts of data between services, supporting millions of independent topics and millions of messages per second. It offers strong ordering and consistency guarantees, meaning messages arrive reliably and in the order they were sent, and it supports both topic streaming (a continuous feed of events) and queue semantics (work items picked up one at a time). Pulsar is designed to run as a hosted service: it includes multi-tenancy (multiple teams sharing one cluster with their own authentication, authorization, and quotas), a load balancer, geo-replication (copying data between data centers), and transparent handling of partitioned topics and message batching. It also tracks each consumer's position in the message stream and exposes a REST API for provisioning, administration, and stats. Teams typically reach for Pulsar when they need a backbone for event streaming, message queuing, or decoupling services at scale, especially across multiple regions or tenants. The core is written in Java and built with Gradle. Recent versions (4.x and master) target JDK 21 for the broker, with the command-line tools and Java client supporting JDK 17 or 21. Official client libraries are maintained for .NET/C#, C++, Go, Node.js, Python, and a reactive Java variant. The project is part of the Apache Software Foundation and licensed under Apache 2.0. The full README is longer than what was provided.

Copy-paste prompts

Prompt 1
Set up a local Apache Pulsar cluster and write a Java producer that publishes 1000 messages per second to a topic called orders, then a consumer that prints each message.
Prompt 2
How do I configure Pulsar geo-replication to sync messages between two clusters in different regions? Show me the admin CLI commands.
Prompt 3
I am migrating from Kafka to Pulsar. What are the key differences in how topics, consumer groups, and offset management work?
Prompt 4
Write a Python Pulsar consumer that reads from a partitioned topic, acknowledges messages individually, and handles connection failures with retries.
Prompt 5
How does Pulsar multi-tenancy work? Show me the admin commands to create a tenant, a namespace, and a topic with its own auth policy.
Open on GitHub → Explain another repo

← apache on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.