This tutorial guides you through every step of using pulsar-admin CLI to manage topics. It includes the following steps:
Set the service URL.
Create a partitioned topic.
Update the number of a partition.
Produce messages to the topic.
Check the stats of the topic.
Delete the topic.
Set the service URLs to point to the broker service in client.conf.
webServiceUrl=http://localhost:8080/ brokerServiceUrl=pulsar://localhost:6650/
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.
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.
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
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 } }, ...
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
To check the detailed usage of pulsar-admin CLI, see pulsar-admin CLI reference.