Interface TableViewBuilder<T>
TableViewBuilder is used to configure and create instances of TableView.- Since:
- 2.10.0
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionautoUpdatePartitionsInterval(int interval, TimeUnit unit) Set the interval of updating partitions (default: 1 minute).create()Finalize the creation of theTableViewinstance.Finalize the creation of theTableViewinstance in asynchronous mode.<V> TableView<V> createMapped(TableViewMessageMapper<T, V> mapper) <V> CompletableFuture<TableView<V>> createMappedAsync(TableViewMessageMapper<T, V> mapper) Set theConsumerCryptoFailureActionto specify.cryptoKeyReader(CryptoKeyReader cryptoKeyReader) Set theCryptoKeyReaderto decrypt the message payloads.defaultCryptoKeyReader(String privateKey) Set the default implementation ofCryptoKeyReader.defaultCryptoKeyReader(Map<String, String> privateKeys) Set the default implementation ofCryptoKeyReader.Load the configuration from provided config map.subscriptionName(String subscriptionName) Set the subscription name of theTableView.Set the topic name of theTableView.
-
Method Details
-
loadConf
Load the configuration from provided config map.Example:
Map<String, Object> config = new HashMap<>(); config.put("topicName", "test-topic"); config.put("autoUpdatePartitionsSeconds", "300"); TableViewBuilder<byte[]> builder = ...; builder = builder.loadConf(config); TableView<byte[]> tableView = builder.create();- Parameters:
config- configuration to load- Returns:
- the
TableViewBuilderinstance
-
create
Finalize the creation of theTableViewinstance.This method will block until the tableView is created successfully or an exception is thrown.
- Returns:
- the
TableViewinstance - Throws:
PulsarClientException- if the tableView creation fails
-
createAsync
CompletableFuture<TableView<T>> createAsync()Finalize the creation of theTableViewinstance in asynchronous mode.This method will return a
CompletableFuturethat can be used to access the instance when it's ready.- Returns:
- the
TableViewinstance
-
createMapped
Creates aTableViewinstance where the values are produced by a user-definedmapperfrom each message.This provides a flexible way to create a key-value view over a topic, allowing users to extract data from the message payload, properties, and other metadata into a custom object of type
V. To get a view of the fullMessageobjects, usemsg -> msgas the mapper. Message pooling is not used for mapped table views, so it is safe to keep a reference to theMessageinstance passed to the mapper. A retainedMessageholds more than its payload, though: it also keeps its metadata, schema and a reference to the connection it was received on. For a topic with many keys, prefer a mapper that copies the needed fields into a value object overmsg -> msg.A keyed message with an empty payload is a tombstone: the key is removed from the view and the mapper is not called for it. If the mapper returns
null, the message is also treated as a tombstone. If the mapper throws, the message is skipped andTableViewMessageMapper.onMappingError(Message, Throwable)is called; the key keeps its previous value.A
topicCompactionStrategyClassNameloaded withloadConf(Map)is rejected for mapped table views: aTopicCompactionStrategycompares values of the topic's schema type, which a mapped table view does not store.- Type Parameters:
V- the type of the values in theTableView- Parameters:
mapper- the mapper that produces the value of typeVfor eachMessage- Returns:
- the
TableViewinstance - Throws:
PulsarClientException- if the tableView creation failsIllegalArgumentException- if the mapper isnullor a topic compaction strategy is configured
-
createMappedAsync
Creates aTableViewinstance in asynchronous mode where the values are produced by a user-definedmapperfrom each message.See
createMapped(TableViewMessageMapper)for the mapping contract.- Type Parameters:
V- the type of the values in theTableView- Parameters:
mapper- the mapper that produces the value of typeVfor eachMessage- Returns:
- a future that can be used to access the
TableViewinstance when it's ready; it fails withIllegalArgumentExceptionif the mapper isnullor a topic compaction strategy is configured
-
topic
Set the topic name of theTableView.- Parameters:
topic- the name of the topic to create theTableView- Returns:
- the
TableViewBuilderbuilder instance
-
autoUpdatePartitionsInterval
Set the interval of updating partitions (default: 1 minute).- Parameters:
interval- the interval of updating partitionsunit- the time unit of the interval- Returns:
- the
TableViewBuilderbuilder instance
-
subscriptionName
Set the subscription name of theTableView.- Parameters:
subscriptionName- the name of the subscription to the topic- Returns:
- the
TableViewBuilderbuilder instance
-
cryptoKeyReader
Set theCryptoKeyReaderto decrypt the message payloads.- Parameters:
cryptoKeyReader- CryptoKeyReader object- Returns:
- the
TableViewBuilderbuilder instance
-
defaultCryptoKeyReader
Set the default implementation ofCryptoKeyReader.Configure the key reader to be used to decrypt message payloads.
- Parameters:
privateKey- the private key that is always used to decrypt message payloads.- Returns:
- the
TableViewBuilderbuilder instance
-
defaultCryptoKeyReader
Set the default implementation ofCryptoKeyReader.Configure the key reader to be used to decrypt message payloads.
- Parameters:
privateKeys- the map of private key names and their URIs used to decrypt message payloads.- Returns:
- the
TableViewBuilderbuilder instance
-
cryptoFailureAction
Set theConsumerCryptoFailureActionto specify.- Parameters:
action- the action to take when the decoding fails- Returns:
- the
TableViewBuilderbuilder instance
-