71 lines
2.7 KiB
Plaintext
71 lines
2.7 KiB
Plaintext
## Cloud Events with Spring samples
|
|
|
|
### Introduction
|
|
The current example uses spring-cloud-function framework as its core which allows users to only worry about functional aspects of
|
|
their requirement while taking care-off non-functional aspects. For more information on Spring Cloud Function please visit
|
|
our https://spring.io/projects/spring-cloud-function[project page].
|
|
The example provides dependency and instructions to demonstrate several distinct invocation models:
|
|
|
|
- Direct function invocation
|
|
- Function as a REST endpoint
|
|
- Function as message handler (e.g., Kafka, RabbitMQ etc)
|
|
- Function invocation via RSocket
|
|
|
|
The POM file defines all the necessary dependency in a segregated way, so you can choose the one you're interested in.
|
|
|
|
#### Direct function invocation
|
|
|
|
#### Function as a REST endpoint
|
|
|
|
Given that SCF allows function to be exposed as REST endpoints, you can post cloud event to any of the
|
|
functions by using function name as path (e.g., localhost:8080/<function_name>)
|
|
|
|
Here is an example of curl command posting a cloud event in binary-mode:
|
|
|
|
[source, text]
|
|
----
|
|
curl -w'\n' localhost:8080/asPOJO \
|
|
-H "ce-Specversion: 1.0" \
|
|
-H "ce-Type: com.example.springevent" \
|
|
-H "ce-Source: spring.io/spring-event" \
|
|
-H "Content-Type: application/json" \
|
|
-H "ce-Id: 0001" \
|
|
-d '{"releaseDate":"24-03-2004", "releaseName":"Spring Framework", "version":"1.0"}'
|
|
----
|
|
|
|
And here is an example of curl command posting a cloud event in structured-mode:
|
|
|
|
[source, text]
|
|
----
|
|
curl -w'\n' localhost:8080/asString \
|
|
-H "ce-Specversion: 1.0" \
|
|
-H "ce-Type: com.example.springevent" \
|
|
-H "ce-Source: spring.io/spring-event" \
|
|
-H "Content-Type: application/cloudevents+json" \
|
|
-H "ce-Id: 0001" \
|
|
-d '{
|
|
"specversion" : "1.0",
|
|
"type" : "org.springframework",
|
|
"source" : "https://spring.io/",
|
|
"id" : "A234-1234-1234",
|
|
"datacontenttype" : "application/json",
|
|
"data" : {
|
|
"version" : "1.0",
|
|
"releaseName" : "Spring Framework",
|
|
"releaseDate" : "24-03-2004"
|
|
}
|
|
}'
|
|
----
|
|
|
|
#### Function as message handler (e.g., Kafka, RabbitMQ etc)
|
|
|
|
Streaming support for Kafka and Rabbit is provided via Spring Cloud Stream framework (link). In fact we're only mentioning Kafka and Rabbit here as an example.
|
|
Streaming support is automatically provided for any existing binders (e.g., Solace, GCP, AWS etc) (link)
|
|
Binders are components of SCSt responsible to bind user code (e.g., function) to broker destinations so execution is triggered
|
|
by messages on broker destination and results of execution are sent to broker destinations. Binders also provide support consumer
|
|
groups and partitioning for both Kafka and RabbitMQ messaging systems.
|
|
|
|
|
|
#### Function invocation via RSocket
|
|
|
|
TBD |