Managing Brokers
Pulsar brokers consist of two components:
- An HTTP server exposing a REST interface administration and topic lookup.
- A dispatcher that handles all Pulsar message transfers.
Brokers can be managed via:
- The
brokers
command of thepulsar-admin
tool - The
/admin/v2/brokers
endpoint of the admin REST API - The
brokers
method of the PulsarAdmin object in the Java API
In addition to being configurable when you start them up, brokers can also be dynamically configured.
See the Configuration page for a full listing of broker-specific configuration parameters.
Brokers resources​
List active brokers​
Fetch all available active brokers that are serving traffic.
pulsar-admin​
$ pulsar-admin brokers list use
broker1.use.org.com:8080
REST​
GET /admin/v2/brokers/:cluster/getActiveBrokers
Java​
admin.brokers().getActiveBrokers(clusterName)
list of namespaces owned by a given broker​
It finds all namespaces which are owned and served by a given broker.
CLI​
$ pulsar-admin brokers namespaces use \
--url broker1.use.org.com:8080
{
"my-property/use/my-ns/0x00000000_0xffffffff": {
"broker_assignment": "shared",
"is_controlled": false,
"is_active": true
}
}
REST​
GET /admin/v2/brokers/:cluster/:broker/ownedNamespaces/getOwnedNamespaes
Java​
admin.brokers().getOwnedNamespaces(cluster,brokerUrl);
Dynamic broker configuration​
One way to configure a Pulsar broker is to supply a configuration when the broker is started up.
But since all broker configuration in Pulsar is stored in ZooKeeper, configuration values can also be dynamically updated while the broker is running. When you update broker configuration dynamically, ZooKeeper will notify the broker of the change and the broker will then override any existing configuration values.
- The
brokers
command for thepulsar-admin
tool has a variety of subcommands that enable you to manipulate a broker's configuration dynamically, enabling you to update config values and more. - In the Pulsar admin REST API, dynamic configuration is managed through the
/admin/v2/brokers/configuration
endpoint.
Update dynamic configuration​
pulsar-admin​
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 for the brokerShutdownTimeoutMs
parameter:
$ pulsar-admin brokers update-dynamic-config --config brokerShutdownTimeoutMs --value 100
REST API​
POST /admin/v2/brokers/configuration/:configName/:configValue/updateDynamicConfiguration
Java​
admin.brokers().updateDynamicConfiguration(configName, configValue);
List updated values​
Fetch a list of all potentially updatable configuration parameters.
pulsar-admin​
$ pulsar-admin brokers list-dynamic-config
brokerShutdownTimeoutMs
REST API​
GET /admin/v2/brokers/configuration/getDynamicConfigurationName
Java​
admin.brokers().getDynamicConfigurationNames();
List all​
Fetch a list of all parameters that have been dynamically updated.
pulsar-admin​
$ pulsar-admin brokers get-all-dynamic-config
brokerShutdownTimeoutMs:100
REST API​
GET /admin/v2/brokers/configuration/values/getAllDynamicConfigurations
Java​
admin.brokers().getAllDynamicConfigurations();