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.
-
Enable the
streamStorageservice in BookKeeper. Currently, the service uses the NAR package, so you need to set the configuration in theconf/bookkeeper.conffile.##################################################################
##################################################################
# 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
streamStorageservice has been started successfully.-
Input:
telnet localhost 4181 -
Output:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
-
-
Configure
stateStorageServiceUrlin theconf/functions_worker.ymlfile.bk-service-urlis the service URL pointing to the BookKeeper table service.stateStorageServiceUrl: bk://<bk-service-url>:4181