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
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 4181storageserver.grpc.port=4181### Dlog Settings for table service ####### Replication Settingsdlog.bkcEnsembleSize=3dlog.bkcWriteQuorumSize=2dlog.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