Enable stateful functions
When the stateful APIs of Pulsar Functions are required – for example, putState()
and queryState()
related interfaces – you need to enable the stateful function feature in function workers.
To enable the stateful function feature in function workers, complete the following steps.
-
Enable the
streamStorage
service in BookKeeper. Currently, the service uses the NAR package, so you need to set the configuration in theconf/bookkeeper.conf
file.##################################################################
##################################################################
# Settings below are used by stream/table service
##################################################################
##################################################################
### Grpc Server ###
# the grpc server port to listen on. default is 4181
storageserver.grpc.port=4181
### Dlog Settings for table service ###
#### Replication Settings
dlog.bkcEnsembleSize=3
dlog.bkcWriteQuorumSize=2
dlog.bkcAckQuorumSize=2
### Storage ###
# local storage directories for storing table ranges data (e.g. rocksdb sst files)
storage.range.store.dirs=data/bookkeeper/ranges
# whether the storage server capable of serving readonly tables. default is false.
storage.serve.readonly.tables=false
# the cluster controller schedule interval, in milliseconds. default is 30 seconds.
storage.cluster.controller.schedule.interval.ms=30000 -
After starting the bookie, use the following methods to check whether the
streamStorage
service has been started successfully.-
Input:
telnet localhost 4181
-
Output:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
-
-
Configure
stateStorageServiceUrl
in theconf/functions_worker.yml
file.bk-service-url
is the service URL pointing to the BookKeeper table service.stateStorageServiceUrl: bk://<bk-service-url>:4181