Managing Brokers
tip
This page only shows some frequently used operations. For the latest and complete information, see the reference docs below.
Category | Method | If you want to manage brokers… |
---|---|---|
Pulsar CLI | pulsar-admin, which lists all commands, flags, descriptions, and more. | See the broker command |
Pulsar admin APIs | REST API, which lists all parameters, responses, samples, and more. | See the /admin/v2/brokers endpoint |
Pulsar admin APIs | Java admin API, which lists all classes, methods, descriptions, and more. | See the brokers method of the PulsarAdmin object |
List active broker
Fetch all available active brokers that are serving traffic with cluster name.
- pulsar-admin
- REST API
- Java
pulsar-admin brokers list use
Example output:
localhost:8080
GET /admin/v2/brokers/{cluster}
admin.brokers().getActiveBrokers(clusterName)
List namespace owned by broker
You can list all namespaces which are owned and served by a given broker.
- pulsar-admin
- REST API
- Java
pulsar-admin brokers namespaces use \
--url localhost:8080
Example output:
public/default/0x00000000_0x40000000 [broker_assignment=shared is_controlled=false is_active=true]
public/default/0xc0000000_0xffffffff [broker_assignment=shared is_controlled=false is_active=true]
public/functions/0x40000000_0x80000000 [broker_assignment=shared is_controlled=false is_active=true]
public/functions/0x00000000_0x40000000 [broker_assignment=shared is_controlled=false is_active=true]
pulsar/standalone/localhost:8080/0x00000000_0xffffffff [broker_assignment=shared is_controlled=false is_active=true]
pulsar/localhost:8080/0x00000000_0xffffffff [broker_assignment=shared is_controlled=false is_active=true]
public/functions/0x80000000_0xc0000000 [broker_assignment=shared is_controlled=false is_active=true]
public/default/0x80000000_0xc0000000 [broker_assignment=shared is_controlled=false is_active=true]
GET /admin/v2/brokers/{clusterName}/{brokerId}/ownedNamespaces
admin.brokers().getOwnedNamespaces(cluster,brokerUrl);
Update broker conf
You can update broker configurations using one of the following ways:
Supply configurations when starting up brokers.
Update configurations dynamically when running brokers.
Since all broker configurations in Pulsar are stored in ZooKeeper, configuration values can also be dynamically updated when brokers are running. When you update broker configurations dynamically, ZooKeeper will notify the broker of the change and then the broker will override any existing configuration values.
List updatable broker conf
Fetch a list of all potentially updatable configuration parameters.
- pulsar-admin
- REST API
- Java
pulsar-admin brokers list-dynamic-config
Example output:
forceDeleteNamespaceAllowed
loadBalancerMemoryResourceWeight
allowAutoTopicCreation
brokerDeleteInactivePartitionedTopicMetadataEnabled
managedLedgerInactiveLedgerRolloverTimeSeconds
loadBalancerNamespaceBundleMaxMsgRate
resourceUsageTransportPublishIntervalInSecs
# omit...
GET /admin/v2/brokers/configuration
admin.brokers().getDynamicConfigurationNames();
Update broker conf dynamically
- pulsar-admin
- REST API
- Java
The update-dynamic-config subcommand will update existing configuration. It takes two arguments: the name of the parameter and the new value using the config
and value
flag respectively. Here’s an example of the brokerShutdownTimeoutMs parameter:
pulsar-admin brokers update-dynamic-config --config brokerShutdownTimeoutMs --value 100
POST /admin/v2/brokers/configuration/{configName}/{configValue}
admin.brokers().updateDynamicConfiguration(configName, configValue);
List updated broker conf
Fetch a list of all parameters that have been dynamically updated.
- pulsar-admin
- REST API
- Java
pulsar-admin brokers get-all-dynamic-config
Example output:
brokerShutdownTimeoutMs 100
GET /admin/v2/brokers/configuration/values
admin.brokers().getAllDynamicConfigurations();
Get info of leader broker
Fetch the information of the leader broker, for example, the service URL.
- pulsar-admin
- REST API
- Java
pulsar-admin brokers leader-broker
Example output:
{
"serviceUrl" : "http://localhost:8080"
}
GET /admin/v2/brokers/leaderBroker
admin.brokers().getLeaderBroker()
For the detail of the code above, see here