GH-766 Add initial docs for function visualization

Resolves #766
This commit is contained in:
Oleg Zhurakousky
2021-12-01 08:21:57 +01:00
parent ec3f324ff7
commit 6d872a20ee

View File

@@ -123,6 +123,80 @@ for example, you will need to use `@EnableAutoConfiguration`. Your functions can
declarations if you want (i.e. the "hybrid" style), but in that case you will need to explicitly switch off the "full
functional mode" using `spring.functional.enabled=false` so that Spring Boot can take back control.
[[function_visualization]]
= Function visualization and control
Spring Cloud Function supports visualization of functions available in `FunctionCatalog` through Actuator endpoints as well as programmatic way.
==== Programmatic way
To see function available within your application context programmatically all you need is access to `FunctionCatalog`. There you can
finds methods to get the size of the catalog, lookup functions as well as list the names of all the available functions.
For example,
[source,java]
----
FunctionCatalog functionCatalog = context.getBean(FunctionCatalog.class);
int size = functionCatalog.size(); // will tell you how many functions available in catalog
Set<String> names = functionCatalog.getNames(null); will list the names of all the Function, Suppliers and Consumers available in catalog
. . .
----
==== Actuator
Since actuator and web are optional, you must first add one of the web dependencies as well as add the actuator dependency manually.
The following example shows how to add the dependency for the Web framework:
[source,xml]
----
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
----
The following example shows how to add the dependency for the WebFlux framework:
[source,xml]
----
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
----
You can add the Actuator dependency as follows:
[source,xml]
----
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
----
You must also enable the `functions` actuator endpoints by setting the following property: `--management.endpoints.web.exposure.include=functions`.
Access the following URL to see the functions in FunctionCatalog:
`http://<host>:<port>/actuator/functions`
For example,
[source,text]
----
curl http://localhost:8080/actuator/functions
----
Your output should look something like this:
[source,text]
----
{"charCounter":
{"type":"FUNCTION","input-type":"string","output-type":"integer"},
"logger":
{"type":"CONSUMER","input-type":"string"},
"functionRouter":
{"type":"FUNCTION","input-type":"object","output-type":"object"},
"words":
{"type":"SUPPLIER","output-type":"string"}. . .
----
= Testing Functional Applications