\u001B[1mSYNOPSIS\u001B[0m
    ${project.description}

    Original Maven URL:
        \u001B[33mmvn:${pkgGroupId}/${pkgArtifactId}/${pkgVersion}\u001B[0m

\u001B[1mDESCRIPTION\u001B[0m
    Apache Pulsar is an open-source distributed pub-sub messaging system originally created at Yahoo and now part
    of the Apache Software Foundation.

    * Pulsar Functions
    Easily deploy lightweight compute logic using developer-friendly APIs without needing to run your own stream processing engine

    * Proven in production
    Pulsar has run in production at Yahoo scale for over 3 years, with millions of messages per second across millions of topics

    * Horizontally scalable
    Seamlessly expand capacity to hundreds of nodes

    * Low latency with durability
    Designed for low publish latency (< 5ms) at scale with strong durability guarantees

    * Geo-replication
    Designed for configurable replication between data centers across multiple geographic regions

    * Multi-tenancy
    Built from the ground up as a multi-tenant system. Supports isolation, authentication, authorization and quotas

    * Persistent storage
    Persistent message storage based on Apache BookKeeper. Provides IO-level isolation between write and read operations

    * Client libraries
    Flexible messaging models with high-level APIs for Java, C++, Python and GO

    * Operability
    REST Admin API for provisioning, administration, tools and monitoring. Deploy on bare metal or Kubernetes

\u001B[1mSEE ALSO\u001B[0m
    \u001B[36mhttp://pulsar.apache.org/\u001B[0m
