#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

ack:
  q: What is an acknowledgement (ack)?
  def: A message sent to a Pulsar broker by a consumer that a message has been successfully processed. An acknowledgement (ack) is Pulsar's way of knowing that the message can be deleted from the system; if no acknowledgement, then the message will be retained until it's processed.
bookie:
  q: What is a bookie?
  def: Bookie is just a nickname for an individual BookKeeper server.
bookkeeper:
  q: What is BookKeeper?
  def: Apache BookKeeper is a persistent log storage system that Pulsar uses to store message data.
broker:
  q: What is a broker?
  def:
    "A stateless component of Pulsar clusters that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a dispatcher that handles all message transers. Pulsar clusters typically consist of multiple brokers."
cluster:
  q: What is a cluster?
  def: A set of Pulsar brokers and BookKeeper servers (aka bookies). Clusters can reside in different geographical regions and replicate messages to one another in a process called geo-replication.
configuration-store:
  q: What is the configuration store?
  def: |
    Pulsar's configuration store (previously known as global ZooKeeper) is a ZooKeeper quorum that is used for configuration-specific tasks. A multi-cluster Pulsar installation requires just one configuration store across all clusters.
consumer:
  q: What is a consumer?
  def: A process that establishes a subscription to a Pulsar topic and processes messages published to that topic by producers.
cursor:
  q: What is a cursor?
  def: The subscription position for a consumer.
discovery:
  q: What is (service) discovery in Pulsar?
  def: A mechanism provided by Pulsar that enables connecting clients to use just a single URL to interact with all the brokers in a cluster.
dispatcher:
  q: What is a dispatcher?
  def: An asynchronous TCP server used for all data transfers in a Pulsar cluster. The Pulsar dispatcher uses a custom binary protocol for all communications.
geo-replication:
  q: What is geo-replication?
  def: Replication of messages across Pulsar clusters, potentially in different datacenters or geographical regions.
global-topic:
  q: What is a global topic?
  def: A topic that belongs to a global, instance-wide namespace and thus isn't tied to any specific cluster.
instance:
  q: What is a Pulsar instance?
  def: A group of Pulsar clusters that act together as a single unit.
ledger:
  q: What is a ledger?
  def: An append-only data structure in BookKeeper that is used to persistently store messages in Pulsar topics.
message:
  q: What is a message in Pulsar?
  def: Messages are the basic unit of Pulsar. They're what producers publish to topics and what consumers then consume from topics.
multi-tenancy:
  q: What is multi-tenancy?
  def: The ability to isolate namespaces, specify quotas, and configure authentication and authorization on a per-property basis.
namespace:
  q: What is a namespace?
  def: A grouping mechanism for related topics.
namespace-bundle:
  q: What is a namespace bundle?
  def: |
    A virtual group of topics that belong to the same namespace. A namespace bundle is defined as a range between two 32-bit hashes, such as 0x00000000 and 0xffffffff.
partitioned-topic:
  q: What is a partitioned topic?
  def: A topic that is served by multiple Pulsar brokers, which enables higher throughput.
producer:
  q: What is a producer?
  def: A process that publishes messages to a Pulsar topic.
property:
  q: What is a property?
  def: A Pulsar tenant.
pub-sub:
  q: What is the publish-subscribe pattern (pub-sub)?
  def: A messaging pattern in which publisher proccesses publish messages on topics that are then consumed (processed) by consumer processes.
pulsar:
  q: What is Pulsar?
  def: Pulsar is a distributed messaging system originally created by Yahoo but now under the stewardship of the Apache Software Foundation.
pulsar-functions:
  q: What are Pulsar Functions?
  def: Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.
reader:
  q: What is a Pulsar reader?
  def:
    "Pulsar readers are message processors much like Pulsar consumers but with two crucial differences: (1) you can specify *where* on a topic readers begin processing messages (consumers always begin with the latest available unacked message); and (2) readers don't retain data or acknowledge messages."
retention-policy:
  q: What is a retention policy?
  def: Size and/or time limits that you can set on a namespace to configure retention of messages that have already been acknowledged.
standalone:
  q: What is a standalone Pulsar broker?
  def: A lightweight Pulsar broker in which all components run in a single Java Virtual Machine (JVM) process. Standalone clusters can be run on a single machine and are useful for development purposes.
subscription:
  q: What is a subscription?
  def: |
    A lease on a topic established by a consumer. Pulsar has three subscription modes (exclusive, shared, and failover).
tenant:
  q: What is a tenant?
  def: An administrative unit for allocating capacity and enforcing an authentication/authorization scheme. Tenants in Pulsar are managed at the property level.
topic:
  q: What is a topic?
  def: A named channel used to pass messages published by producers to consumers who process those messages.
topic-lookup:
  q: What is topic lookup?
  def: A service provided by Pulsar brokers that enables connecting clients to automatically determine which Pulsar cluster is responsible for a topic (and thus where message traffic for the topic needs to be routed).
unacknowledged:
  q: What is an unacknowledged message?
  def: A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.
zookeeper:
  q: What is ZooKeeper?
  def: |
    ZooKeeper is a service that Pulsar uses for coordination-related tasks.<br /><br />A Pulsar instance relies on both a local ZooKeeper for cluster-specific tasks and a ZooKeeper configuration store for instance-wide tasks.
