import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';
Pulsar brokers consist of two components:
Brokers can be managed via:
brokers command of the pulsar-admin tool/admin/v2/brokers endpoint of the admin {@inject: rest:REST:/} APIbrokers method of the {@inject: javadoc:PulsarAdmin:/admin/org/apache/pulsar/client/admin/PulsarAdmin.html} object in the Java APIIn 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.
Fetch all available active brokers that are serving traffic.
<Tabs defaultValue="pulsar-admin" values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}> <TabItem value="pulsar-admin"> ```shell $ pulsar-admin brokers list use ``` ``` broker1.use.org.com:8080 ``` </TabItem> <TabItem value="REST API"> {@inject: endpoint|GET|/admin/v2/brokers/:cluster|operation/getActiveBrokers?version=@pulsar:version_number@} </TabItem> <TabItem value="JAVA"> ```java admin.brokers().getActiveBrokers(clusterName) ``` </TabItem> </Tabs>
It finds all namespaces which are owned and served by a given broker.
<Tabs defaultValue="pulsar-admin" values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}> <TabItem value="pulsar-admin"> ```shell $ pulsar-admin brokers namespaces use \ --url broker1.use.org.com:8080 ``` ```json { "my-property/use/my-ns/0x00000000_0xffffffff": { "broker_assignment": "shared", "is_controlled": false, "is_active": true } } ``` </TabItem> <TabItem value="REST API"> {@inject: endpoint|GET|/admin/v2/brokers/:cluster/:broker/ownedNamespaces|operation/getOwnedNamespaes?version=@pulsar:version_number@} </TabItem> <TabItem value="JAVA"> ```java admin.brokers().getOwnedNamespaces(cluster,brokerUrl); ``` </TabItem> </Tabs>
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.
brokers command for the pulsar-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./admin/v2/brokers/configuration endpoint.<Tabs defaultValue="pulsar-admin" values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}> <TabItem value="pulsar-admin"> The [`update-dynamic-config`](reference-pulsar-admin.md#brokers-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`](reference-configuration.md#broker-brokerShutdownTimeoutMs) parameter: ```shell $ pulsar-admin brokers update-dynamic-config --config brokerShutdownTimeoutMs --value 100 ``` </TabItem> <TabItem value="REST API"> {@inject: endpoint|POST|/admin/v2/brokers/configuration/:configName/:configValue|operation/updateDynamicConfiguration?version=@pulsar:version_number@} </TabItem> <TabItem value="JAVA"> ```java admin.brokers().updateDynamicConfiguration(configName, configValue); ``` </TabItem> </Tabs>
Fetch a list of all potentially updatable configuration parameters.
<Tabs defaultValue="pulsar-admin" values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}> <TabItem value="pulsar-admin"> ```shell $ pulsar-admin brokers list-dynamic-config brokerShutdownTimeoutMs ``` </TabItem> <TabItem value="REST API"> {@inject: endpoint|GET|/admin/v2/brokers/configuration|operation/getDynamicConfigurationName?version=@pulsar:version_number@} </TabItem> <TabItem value="JAVA"> ```java admin.brokers().getDynamicConfigurationNames(); ``` </TabItem> </Tabs>
Fetch a list of all parameters that have been dynamically updated.
<Tabs defaultValue="pulsar-admin" values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}> <TabItem value="pulsar-admin"> ```shell $ pulsar-admin brokers get-all-dynamic-config brokerShutdownTimeoutMs:100 ``` </TabItem> <TabItem value="REST API"> {@inject: endpoint|GET|/admin/v2/brokers/configuration/values|operation/getAllDynamicConfigurations?version=@pulsar:version_number@} </TabItem> <TabItem value="JAVA"> ```java admin.brokers().getAllDynamicConfigurations(); ``` </TabItem> </Tabs>