Work with TableView
After setting up your clients, you can explore more to start working with TableView.
Configure TableView
- Java
- C++
The following is an example of how to configure a TableView.
TableView<String> tv = client.newTableViewBuilder(Schema.STRING)
.topic("my-tableview")
.create()
You can use the available parameters in the loadConf configuration or the API TableViewBuilder to customize your TableView.
| Name | Type | Required? | Description | Default |
|---|---|---|---|---|
topic | string | yes | The topic name of the TableView. | N/A |
autoUpdatePartitionInterval | int | no | The interval to check for newly added partitions. | 60 (seconds) |
subscriptionName | string | no | The subscription name of the TableView. | null |
This feature is supported in C++ client 3.2.0 or later versions.
ClientConfiguration clientConfiguration;
clientConfiguration.setPartititionsUpdateInterval(100);
Client client("pulsar://localhost:6650", clientConfiguration);
TableViewConfiguration tableViewConfiguration{schemaInfo, "test-subscription-name"};
TableView tableView;
client.createTableView("my-tableview", tableViewConfiguration, tableView)
You can use the following parameters to customize your TableView.
| Name | Type | Required? | Description | Default |
|---|---|---|---|---|
topic | string | yes | The topic name of the TableView. | N/A |
schemaInfo | struct | no | Declare the schema of the data that this TableView can accept. The schema is checked against the schema of the topic, and the TableView creation fails if it's incompatible. | N/A |
subscriptionName | string | no | The subscription name of the TableView. | reader-{random string} |
partititionsUpdateInterval | int | no | Topic partitions update interval in seconds. In the C++ client, partititionsUpdateInterval is global within the same client. | 60 |
Register listeners
You can register listeners for both existing messages on a topic and new messages coming into the topic by using forEachAndListen, and specify to perform operations for all existing messages by using forEach.
The following is an example of how to register listeners with TableView.
- Java
- C++
// Register listeners for all existing and incoming messages
tv.forEachAndListen((key, value) -> /*operations on all existing and incoming messages*/)
// Register actions for all existing messages
tv.forEach((key, value) -> /*operations on all existing messages*/)
// Register listeners for all existing and incoming messages
tableView.forEach([](const std::string& key, const std::string& value) {});
// Register actions for all existing messages
tableView.forEachAndListen([](const std::string& key, const std::string& value) {});