Manage Functions
tip
This page only shows some frequently used operations. For the latest and complete information, see the reference docs below.
Category | Method | If you want to manage functions… |
---|---|---|
Pulsar CLI | pulsar-admin, which lists all commands, flags, descriptions, and more. | See the functions command |
Pulsar admin APIs | REST API, which lists all parameters, responses, samples, and more. | See the /admin/v3/functions endpoint |
Pulsar admin APIs | Java admin API, which lists all classes, methods, descriptions, and more. | See the functions method of the PulsarAdmin object |
You can perform the following operations on functions.
Create a function
You can create a Pulsar function in cluster mode (deploy it on a Pulsar cluster) using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the create subcommand.
Example
pulsar-admin functions create \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions) \
--inputs test-input-topic \
--output persistent://public/default/test-output-topic \
--classname org.apache.pulsar.functions.api.examples.ExclamationFunction \
--jar $PWD/examples/api-examples.jar
POST /admin/v3/functions/{tenant}/{namespace}/{functionName}
FunctionConfig functionConfig = new FunctionConfig();
functionConfig.setTenant(tenant);
functionConfig.setNamespace(namespace);
functionConfig.setName(functionName);
functionConfig.setRuntime(FunctionConfig.Runtime.JAVA);
functionConfig.setParallelism(1);
functionConfig.setClassName("org.apache.pulsar.functions.api.examples.ExclamationFunction");
functionConfig.setProcessingGuarantees(FunctionConfig.ProcessingGuarantees.ATLEAST_ONCE);
functionConfig.setTopicsPattern(sourceTopicPattern);
functionConfig.setSubName(subscriptionName);
functionConfig.setAutoAck(true);
functionConfig.setOutput(sinkTopic);
admin.functions().createFunction(functionConfig, fileName);
Update a function
You can update a Pulsar function that has been deployed to a Pulsar cluster using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the update subcommand.
Example
pulsar-admin functions update \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions) \
--output persistent://public/default/update-output-topic \
# other options
PUT /admin/v3/functions/{tenant}/{namespace}/{functionName}
FunctionConfig functionConfig = new FunctionConfig();
functionConfig.setTenant(tenant);
functionConfig.setNamespace(namespace);
functionConfig.setName(functionName);
functionConfig.setRuntime(FunctionConfig.Runtime.JAVA);
functionConfig.setParallelism(1);
functionConfig.setClassName("org.apache.pulsar.functions.api.examples.ExclamationFunction");
UpdateOptions updateOptions = new UpdateOptions();
updateOptions.setUpdateAuthData(updateAuthData);
admin.functions().updateFunction(functionConfig, userCodeFile, updateOptions);
Start a function
You can start an instance of a function or start all instances of a function.
Start an instance of a function
You can start a stopped function instance with instance-id
using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the start subcommand.
pulsar-admin functions start \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions) \
--instance-id 1
POST /admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/start
admin.functions().startFunction(tenant, namespace, functionName, Integer.parseInt(instanceId));
Start all instances of a function
You can start all stopped function instances using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the start subcommand.
Example
pulsar-admin functions start \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions) \
POST /admin/v3/functions/{tenant}/{namespace}/{functionName}/start
admin.functions().startFunction(tenant, namespace, functionName);
Stop a function
You can stop an instance of a function or stop all instances of a function.
Stop an instance of a function
You can stop a function instance with instance-id
using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the stop subcommand.
Example
pulsar-admin functions stop \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions) \
--instance-id 1
POST /admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/stop
admin.functions().stopFunction(tenant, namespace, functionName, Integer.parseInt(instanceId));
Stop all instances of a function
You can stop all function instances using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the stop subcommand.
Example
pulsar-admin functions stop \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions)
POST /admin/v3/functions/{tenant}/{namespace}/{functionName}/stop
admin.functions().stopFunction(tenant, namespace, functionName);
Restart a function
You can restart an instance of a function or restart all instances of a function.
Restart an instance of a function
Restart a function instance with instance-id
using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the restart subcommand.
Example
pulsar-admin functions restart \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions) \
--instance-id 1
POST /admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/restart
admin.functions().restartFunction(tenant, namespace, functionName, Integer.parseInt(instanceId));
Restart all instances of a function
You can restart all function instances using Admin CLI, REST API or Java admin API.
- Admin CLI
- REST API
- Java
Use the restart subcommand.
Example
pulsar-admin functions restart \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions)
POST /admin/v3/functions/{tenant}/{namespace}/{functionName}/restart
admin.functions().restartFunction(tenant, namespace, functionName);
List all functions
You can list all Pulsar functions running under a specific tenant and namespace using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the list subcommand.
Example
pulsar-admin functions list \
--tenant public \
--namespace default
GET /admin/v3/functions/{tenant}/{namespace}
admin.functions().getFunctions(tenant, namespace);
Delete a function
You can delete a Pulsar function that is running on a Pulsar cluster using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the delete subcommand.
Example
pulsar-admin functions delete \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions)
DELETE /admin/v3/functions/{tenant}/{namespace}/{functionName}
admin.functions().deleteFunction(tenant, namespace, functionName);
Get info about a function
You can get information about a Pulsar function currently running in cluster mode using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the get subcommand.
Example
pulsar-admin functions get \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions)
GET /admin/v3/functions/{tenant}/{namespace}/{functionName}
admin.functions().getFunction(tenant, namespace, functionName);
Get status of a function
You can get the status of an instance of a function or get the status of all instances of a function.
Get status of an instance of a function
You can get the current status of a Pulsar function instance with instance-id
using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the status subcommand.
Example
pulsar-admin functions status \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions) \
--instance-id 1
GET /admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/status
admin.functions().getFunctionStatus(tenant, namespace, functionName, Integer.parseInt(instanceId));
Get status of all instances of a function
You can get the current status of a Pulsar function instance using Admin CLI, REST API or Java Admin API.
- Admin CLI
- REST API
- Java
Use the status subcommand.
Example
pulsar-admin functions status \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions)
GET /admin/v3/functions/{tenant}/{namespace}/{functionName}/status
admin.functions().getFunctionStatus(tenant, namespace, functionName);
Get stats of a function
You can get stats of an instance of a function or get stats of all instances of a function.
Get stats of an instance of a function
You can get the current stats of a Pulsar Function instance with instance-id
using Admin CLI, REST API or Java admin API.
- Admin CLI
- REST API
- Java
Use the stats subcommand.
Example
pulsar-admin functions stats \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions) \
--instance-id 1
GET /admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/stats
admin.functions().getFunctionStats(tenant, namespace, functionName, Integer.parseInt(instanceId));
Get stats of all instances of a function
You can get the current stats of a Pulsar function using Admin CLI, REST API or Java admin API.
- Admin CLI
- REST API
- Java
Use the stats subcommand.
Example
pulsar-admin functions stats \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions)
GET /admin/v3/functions/{tenant}/{namespace}/{functionName}/stats
admin.functions().getFunctionStats(tenant, namespace, functionName);
Trigger a function
You can trigger a specified Pulsar function with a supplied value using Admin CLI, REST API or Java admin API.
- Admin CLI
- REST API
- Java
Use the trigger subcommand.
Example
pulsar-admin functions trigger \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions) \
--topic (the name of input topic) \
--trigger-value \"hello pulsar\"
# or --trigger-file (the path of trigger file)
POST /admin/v3/functions/{tenant}/{namespace}/{functionName}/trigger
admin.functions().triggerFunction(tenant, namespace, functionName, topic, triggerValue, triggerFile);
Put state associated with a function
You can put the state associated with a Pulsar function using Admin CLI, REST API or Java admin API.
- Admin CLI
- REST API
- Java
Use the putstate subcommand.
Example
pulsar-admin functions putstate \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions) \
--state "{\"key\":\"pulsar\", \"stringValue\":\"hello pulsar\"}"
POST /admin/v3/functions/{tenant}/{namespace}/{functionName}/state/{key}
TypeReference<FunctionState> typeRef = new TypeReference<FunctionState>() {};
FunctionState stateRepr = ObjectMapperFactory.getThreadLocal().readValue(state, typeRef);
admin.functions().putFunctionState(tenant, namespace, functionName, stateRepr);
Fetch state associated with a function
You can fetch the current state associated with a Pulsar function using Admin CLI, REST API or Java admin API.
- Admin CLI
- REST API
- Java
Use the querystate subcommand.
Example
pulsar-admin functions querystate \
--tenant public \
--namespace default \
--name (the name of Pulsar Functions) \
--key (the key of state)
GET /admin/v3/functions/{tenant}/{namespace}/{functionName}/state/{key}
admin.functions().getFunctionState(tenant, namespace, functionName, key);