Skip to main content

Get started

This guide walks you through the quickest way to get started with the following methods to manage topics.

pulsar-admin CLI: it’s a command-line tool and is available in the bin folder of your Pulsar installation.

Check the detailed steps below.

This tutorial guides you through every step of using pulsar-admin CLI to manage topics. It includes the following steps:

  1. Set the service URL.

  2. Create a partitioned topic.

  3. Update the number of a partition.

  4. Produce messages to the topic.

  5. Check the stats of the topic.

  6. Delete the topic.

Prerequisites

  • Install and start Pulsar standalone. This tutorial runs Pulsar 2.11 as an example.

Steps

  1. Set the service URLs to point to the broker service in client.conf.

    webServiceUrl=http://localhost:8080/
    brokerServiceUrl=pulsar://localhost:6650/
  2. Create a persistent topic named test-topic-1 with 6 partitions.

    Input

    bin/pulsar-admin topics create-partitioned-topic \
    persistent://public/default/test-topic-1 \
    --partitions 6

    Output

    There is no output. You can check the status of the topic in Step 5.

  3. Update the number of the partition to 8.

    Input

    bin/pulsar-admin topics update-partitioned-topic \
    persistent://public/default/test-topic-1 \
    --partitions 8

    Output

    There is no output. You can check the number of partitions in Step 5.

  4. Produce some messages to the partitioned topic test-topic-1.

    Input

    bin/pulsar-perf produce -u pulsar://localhost:6650 -r 1000 -i 1000 persistent://public/default/test-topic-1

    Output

    2023-03-07T15:33:56,832+0800 [main] INFO  org.apache.pulsar.testclient.PerformanceProducer - Starting Pulsar perf producer with config: {
    "confFile" : "/Users/yu/apache-pulsar-2.11.0/conf/client.conf",
    "serviceURL" : "pulsar://localhost:6650",
    "authPluginClassName" : "",
    "authParams" : "",
    "tlsTrustCertsFilePath" : "",
    "tlsAllowInsecureConnection" : false,
    "tlsHostnameVerificationEnable" : false,
    "maxConnections" : 1,
    "statsIntervalSeconds" : 1000,
    "ioThreads" : 1,
    "enableBusyWait" : false,
    "listenerName" : null,
    "listenerThreads" : 1,
    "maxLookupRequest" : 50000,
    "topics" : [ "persistent://public/default/test-topic-1" ],
    "numTestThreads" : 1,
    "msgRate" : 1000,
    "msgSize" : 1024,
    "numTopics" : 1,
    "numProducers" : 1,
    "separator" : "-",
    "sendTimeout" : 0,
    "producerName" : null,
    "adminURL" : "http://localhost:8080/",

    ...

    2023-03-07T15:35:03,769+0800 [Thread-0] INFO org.apache.pulsar.testclient.PerformanceProducer - Aggregated latency stats --- Latency: mean: 8.931 ms - med: 3.775 - 95pct: 32.144 - 99pct: 98.432 - 99.9pct: 216.088 - 99.99pct: 304.807 - 99.999pct: 349.391 - Max: 351.235
  5. Check the internal stats of the partitioned topic test-topic-1.

    Input

    bin/pulsar-admin topics partitioned-stats-internal \
    persistent://public/default/test-topic-1

    Output

    Below is a part of the output. For detailed explanations of topic stats, see Pulsar statistics.

    {
    "metadata" : {
    "partitions" : 8
    },
    "partitions" : {
    "persistent://public/default/test-topic-1-partition-1" : {
    "entriesAddedCounter" : 4213,
    "numberOfEntries" : 4213,
    "totalSize" : 8817693,
    "currentLedgerEntries" : 4212,
    "currentLedgerSize" : 8806289,
    "lastLedgerCreatedTimestamp" : "2023-03-07T15:33:59.367+08:00",
    "waitingCursorsCount" : 0,
    "pendingAddEntriesCount" : 0,
    "lastConfirmedEntry" : "65:4211",
    "state" : "LedgerOpened",
    "ledgers" : [ {
    "ledgerId" : 49,
    "entries" : 1,
    "size" : 11404,
    "offloaded" : false,
    "underReplicated" : false
    }, {
    "ledgerId" : 65,
    "entries" : 0,
    "size" : 0,
    "offloaded" : false,
    "underReplicated" : false
    } ],
    "cursors" : {
    "test-subscriptio-1" : {
    "markDeletePosition" : "49:-1",
    "readPosition" : "49:0",
    "waitingReadOp" : false,
    "pendingReadOps" : 0,
    "messagesConsumedCounter" : 0,
    "cursorLedger" : -1,
    "cursorLedgerLastEntry" : -1,
    "individuallyDeletedMessages" : "[]",
    "lastLedgerSwitchTimestamp" : "2023-03-06T16:41:32.801+08:00",
    "state" : "NoLedger",
    "numberOfEntriesSinceFirstNotAckedMessage" : 1,
    "totalNonContiguousDeletedMessagesRange" : 0,
    "subscriptionHavePendingRead" : false,
    "subscriptionHavePendingReplayRead" : false,
    "properties" : { }
    },
    "test-subscription-1" : {
    "markDeletePosition" : "49:-1",
    "readPosition" : "49:0",
    "waitingReadOp" : false,
    "pendingReadOps" : 0,
    "messagesConsumedCounter" : 0,
    "cursorLedger" : -1,
    "cursorLedgerLastEntry" : -1,
    "individuallyDeletedMessages" : "[]",
    "lastLedgerSwitchTimestamp" : "2023-03-06T16:41:32.801+08:00",
    "state" : "NoLedger",
    "numberOfEntriesSinceFirstNotAckedMessage" : 1,
    "totalNonContiguousDeletedMessagesRange" : 0,
    "subscriptionHavePendingRead" : false,
    "subscriptionHavePendingReplayRead" : false,
    "properties" : { }
    }
    },
    "schemaLedgers" : [ ],
    "compactedLedger" : {
    "ledgerId" : -1,
    "entries" : -1,
    "size" : -1,
    "offloaded" : false,
    "underReplicated" : false
    }
    },
    ...
  6. Delete the topic test-topic-1.

    Input

    bin/pulsar-admin topics delete-partitioned-topic persistent://public/default/test-topic-1

    Output

    There is no output. You can verify whether the test-topic-1 exists or not using the following command.

    Input

    List topics in public/default namespace.

    bin/pulsar-admin topics list public/default