Anonymitaet commented on issue #5593: [Docs] Add admin api docs of Pulsar 
Functions
URL: https://github.com/apache/pulsar/pull/5593#issuecomment-551840440
 
 
   @wolfstudy I've updated the contents, you can use them if my understanding 
is correct
   (click **...** > **Edit**)
   
   ----
   
   ---
   id: admin-api-functions
   title: Manage Functions
   sidebar_label: Functions
   ---
   
   **Pulsar Functions** are lightweight compute processes that
   
   * consume messages from one or more Pulsar topics
   * apply a user-supplied processing logic to each message
   * publish the results of the computation to another topic
   
   Functions can be managed via the following methods.
   
   Method | Description
   ---|---
   **Admin CLI** | The [`functions`](reference-pulsar-admin.md#functions) 
command of the [`pulsar-admin`](reference-pulsar-admin.md) tool.
   **REST API** |The `/admin/v3/functions` endpoint of the admin {@inject: 
rest:REST:/} API.
   **Java Admin API**| The `functions` method of the {@inject: 
javadoc:PulsarAdmin:/admin/org/apache/pulsar/client/admin/PulsarAdmin} object 
in the [Java API](client-libraries-java.md).
   
   ## Function resources
   
   You can perform the following operations on functions.
   
   ### Create
   
   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
   
   Use the [`create`](reference-pulsar-admin.md#functions-create) subcommand. 
   
   **Example**
   
   ```shell
   $ 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 /examples/api-examples.jar
   ```
   
   #### REST API
   
   {@inject: 
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}
   
   #### Java Admin API
   
   ```java
   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
   
   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
   
   Use the [`update`](reference-pulsar-admin.md#functions-update) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions update \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) \
     --output persistent://public/default/update-output-topic \
     # other options
   ```
   
   #### REST Admin API
   
   {@inject: 
endpoint|PUT|/admin/v3/functions/{tenant}/{namespace}/{functionName}
   
   #### Java Admin API
   
   ```java
   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 1
   
   You can start a stopped function instance using Admin CLI, REST API or Java 
Admin API.
   
   #### Admin CLI
   
   Use the [`start`](reference-pulsar-admin.md#functions-start) subcommand. 
   
   ```shell
   $ pulsar-admin functions start \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) \
     --instance-id 1
   ```
   
   #### REST API
   
   {@inject: 
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/start
   
   #### Java Admin API
   
   ```java
   admin.functions().startFunction(tenant, namespace, functionName, 
Integer.parseInt(instanceId));
   ```
   
   ### Start 2
   
   You can start all stopped function instances using Admin CLI, REST API or 
Java Admin API.
   
   #### Admin CLI
   
   Use the [`start`](reference-pulsar-admin.md#functions-start) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions start \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) \
   ```
   
   #### REST API
   
   {@inject: 
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/start
   
   #### Java
   
   ```java
   admin.functions().startFunction(tenant, namespace, functionName);
   ```
   
   ### Stop 1
   
   You can stop a function instance with `instance-id` using Admin CLI, REST 
API or Java Admin API.
   
   ### Admin CLI
   
   Use the [`stop`](reference-pulsar-admin.md#functions-stop) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions stop \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) \
     --instance-id 1
   ```
   
   #### REST API
   
   {@inject: 
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/stop
   
   #### Java Admin API
   
   ```java
   admin.functions().stopFunction(tenant, namespace, functionName, 
Integer.parseInt(instanceId));
   ```
   
   ### Stop 2
   
   You can stop all function instances using Admin CLI, REST API or Java Admin 
API.
   
   #### Admin CLI
   
   Use the [`stop`](reference-pulsar-admin.md#functions-stop) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions stop \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) \
   ```
   
   #### REST API
   
   {@inject: 
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/stop
   
   #### Java Admin API
   
   ```java
   admin.functions().stopFunction(tenant, namespace, functionName);
   ```
   
   ### Restart 1
   
   Restart a function instance with `instance-id` using Admin CLI, REST API or 
Java Admin API.
   
   #### Admin CLI
   
   Use the [`restart`](reference-pulsar-admin.md#functions-restart) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions restart \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) \
     --instance-id 1
   ```
   
   #### REST API
   
   {@inject: 
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/restart
   
   #### Java Admin API
   
   ```java
   admin.functions().restartFunction(tenant, namespace, functionName, 
Integer.parseInt(instanceId));
   ```
   
   ### Restart 2
   
   You can restart all function instances using Admin CLI, REST API or Java 
admin API.
   
   #### Admin CLI
   
   Use the [`restart`](reference-pulsar-admin.md#functions-restart) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions restart \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) \
   ```
   
   #### REST API
   
   {@inject: 
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/restart
   
   #### Java Admin API
   
   ```java
   admin.functions().restartFunction(tenant, namespace, functionName);
   ```
   
   ### List
   
   You can list all Pulsar functions running under a specific tenant and 
namespace using Admin CLI, REST API or Java Admin API.
   
   #### Admin CLI
   
   Use the [`list`](reference-pulsar-admin.md#functions-list) subcommand.
   
   **Example**
   
   ```shell
   $ pulsar-admin functions list \
     --tenant public \
     --namespace default
   ```
   
   #### REST API
   
   {@inject: endpoint|GET|/admin/v3/functions/{tenant}/{namespace}
   
   #### Java Admin API
   
   ```java
   admin.functions().getFunctions(tenant, namespace);
   ```
   
   ### Delete
   
   You can delete a Pulsar function that is running on a Pulsar cluster using 
Admin CLI, REST API or Java Admin API.
   
   #### Admin CLI
   
   Use the [`delete`](reference-pulsar-admin.md#functions-delete) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions delete \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) 
   ```
   
   #### REST API
   
   {@inject: 
endpoint|DELETE|/admin/v3/functions/{tenant}/{namespace}/{functionName}
   
   #### Java Admin API
   
   ```java
   admin.functions().deleteFunction(tenant, namespace, functionName);
   ```
   
   ### Get
   
   You can get information about a Pulsar function currently running in cluster 
mode using Admin CLI, REST API or Java Admin API.
   
   #### Admin CLI
   
   Use the [`get`](reference-pulsar-admin.md#functions-get) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions get \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) 
   ```
   
   #### REST API
   
   {@inject: 
endpoint|GET|/admin/v3/functions/{tenant}/{namespace}/{functionName}
   
   #### Java Admin API
   
   ```java
   admin.functions().getFunction(tenant, namespace, functionName);
   ```
   
   ### Status 1
   
   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
   
   Use the [`status`](reference-pulsar-admin.md#functions-status) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions status \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) \
     --instance-id 1
   ```
   
   #### REST API
   
   {@inject: 
endpoint|GET|/admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/status
   
   #### Java Admin API
   
   ```java
   admin.functions().getFunctionStatus(tenant, namespace, functionName, 
Integer.parseInt(instanceId));
   ```
   
   ### Status 2
   
   You can get the current status of a Pulsar function instance using Admin 
CLI, REST API or Java Admin API.
   
   #### Admin CLI
   
   Use the [`status`](reference-pulsar-admin.md#functions-status) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions status \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) 
   ```
   
   #### REST API
   
   {@inject: 
endpoint|GET|/admin/v3/functions/{tenant}/{namespace}/{functionName}/status
   
   #### Java Admin API
   
   ```java
   admin.functions().getFunctionStatus(tenant, namespace, functionName);
   ```
   
   ### Stats 1
   
   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
   
   Use the [`stats`](reference-pulsar-admin.md#functions-stats) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions stats \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) \
     --instance-id 1
   ```
   
   #### REST API
   
   {@inject: 
endpoint|GET|/admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/stats
   
   #### Java Admin API
   
   ```java
   admin.functions().getFunctionStats(tenant, namespace, functionName, 
Integer.parseInt(instanceId));
   ```
   
   ### Stats 2 
   
   You can get the current stats of a Pulsar function using Admin CLI, REST API 
or Java admin API.
   
   #### Admin CLI
   
   Use the [`stats`](reference-pulsar-admin.md#functions-stats) subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions stats \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) 
   ```
   
   #### REST API
   
   {@inject: 
endpoint|GET|/admin/v3/functions/{tenant}/{namespace}/{functionName}/stats
   
   #### Java Admin API
   
   ```java
   admin.functions().getFunctionStats(tenant, namespace, functionName);
   ```
   
   ### Trigger
   
   You can trigger a specified Pulsar function with a supplied value using 
Admin CLI, REST API or Java admin API.
   
   #### Admin CLI
   
   Use the [`trigger`](reference-pulsar-admin.md#functions-trigger) subcommand. 
   
   **Example**
   
   ```shell
   $ 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)
   ```
   
   #### REST API
   
   {@inject: 
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/trigger
   
   #### Java Admin API
   
   ```java
   admin.functions().triggerFunction(tenant, namespace, functionName, topic, 
triggerValue, triggerFile);
   ```
   
   ### Putstate
   
   You can put the state associated with a Pulsar function using Admin CLI, 
REST API or Java admin API.
   
   #### Admin CLI
   
   Use the [`putstate`](reference-pulsar-admin.md#functions-putstate) 
subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions putstate \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) \
     --state "{\"key\":\"pulsar\", \"stringValue\":\"hello pulsar\"}" 
   ```
   
   #### REST API
   
   {@inject: 
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/state/{key}
   
   #### Java Admin API
   
   ```java
   TypeReference<FunctionState> typeRef = new TypeReference<FunctionState>() {};
   FunctionState stateRepr = 
ObjectMapperFactory.getThreadLocal().readValue(state, typeRef);
   admin.functions().putFunctionState(tenant, namespace, functionName, 
stateRepr);
   ```
   
   ### Querystate
   
   You can fetch the current state associated with a Pulsar function using 
Admin CLI, REST API or Java admin API.
   
   #### Admin CLI
   
   Use the [`querystate`](reference-pulsar-admin.md#functions-querystate) 
subcommand. 
   
   **Example**
   
   ```shell
   $ pulsar-admin functions querystate \
     --tenant public \
     --namespace default \
     --name (the name of Pulsar Functions) \
     --key (the key of state) 
   ```
   
   #### REST API
   
   {@inject: 
endpoint|GET|/admin/v3/functions/{tenant}/{namespace}/{functionName}/state/{key}
   
   #### Java Admin CLI
   
   ```java
   admin.functions().getFunctionState(tenant, namespace, functionName, key);
   ```
   
   
   
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to