Spring Runners
These runners are based on Java Spring library.
All relevant Spring configurations are applicable, and can be passed on to these runners using properties files.
All Spring runners accept following configurations, in addition to the common security configurations mentioned in Gateway & Security:
rierino.runner.[name].offset.class
Fully qualified class name for assigning offsets
com.rierino.handler.util.generator.ConstantNumberGenerator
-
rierino.runner.[name].offset.[parameter]
Offset generator specific parameters
value=5
-
rierino.runner.[name].partition
Partition assigned to runner (used for non-broadcasted topics)
1
-
rierino.runner.[name].authentication.enabled
Whether runner requires authentication for API calls
true
false
rierino.runner.[name].authentication.role
Role required (on service account) for making API calls
internal
-
Authentication
If authentication is enabled on a runner (which is different than authentication on API gateways), the following parameters are also applicable, based on preferred authentication method:
Simple Authentication
Simplest form of authentication, using a predefined API key without hashing and roles:
rierino.runner.[name].authentication.token
API key used for authenticating requests
DEMO
-
Hashed Authentication
rierino.runner.[name].authentication.secret
Secret to use for hashing API keys
-
-
rierino.runner.[name].authentication.algorithm
Algorithm for hashing API keys
MD5
SHA-256
rierino.runner.[name].authentication.iterations
Number of iterations for hashing API keys
100
1
rierino.runner.[name].authentication.cache.state
State manager which keeps acceptable hashed keys with their role mappings (should manage its own TTL)
key_store
-
rierino.runner.[name].authentication.system
System to run a saga on, for validating a hashed API key and returning its roles
admin_core
-
rierino.runner.[name].authentication.stream
Stream to run a saga on, for validating a hashed API key and returning its roles
rpc
-
rierino.runner.[name].authentication.action
Action (i.e. saga path) to run, for validating a hashed API key and returning its roles
ProcessAPIKey
-
CRUD Event Runner
CRUDEventRunner (com.rierino.runner.spring.CRUDEventRunner) is a Spring WebFlux based runner, which accepts typical REST calls through http or https protocols for common CRUD operations.
Each request method and path is mapped on to a specific action and processed based on the elements configured on the runner. Path mappings are as follows:
Lists all records for a given state manager, with the following action mappings:
- With no ids and filters parameters: action=GetAll, outputElement=list, state=[state], stream=[state]r
- With ids parameters: action=GetList, payload={list:[{id:id1},...]}, inputElement=list, state=[state], stream=[state]r
- With filters parameters: payload=[filters], state=[state], stream=[state]c
crud
product
0
10
data.name,data.description
id asc
123,234
GET /api/{runner}/{state} HTTP/1.1
Host: localhost
Accept: */*
successful operation
{
"list": [
{}
]
}
Reads a single record for a given state manager, with the following action mappings: action=Get, payload={id:[id]}, state=[state], stream=[state]r
crud
product
123
data.name,data.description
Found aggregate
GET /api/{runner}/{state}/{id} HTTP/1.1
Host: localhost
Accept: */*
successful operation
{}
Creates a single record for a given state manager, with the following action mappings: action=Create, payload={[body]}, state=[state], stream=[state]w
crud
product
Created aggregate
POST /api/{runner}/{state} HTTP/1.1
Host: localhost
Content-Type: application/json
Accept: */*
Content-Length: 11
{
"data": {}
}
successful operation
{}
Creates a single record for a given state manager, with the following action mappings: action=Create, payload={[body], id:[id]}, state=[state], stream=[state]w
crud
product
123
123
Created aggregate
POST /api/{runner}/{state}/{id} HTTP/1.1
Host: localhost
Content-Type: application/json
Accept: */*
Content-Length: 22
{
"id": "123",
"data": {}
}
successful operation
{}
Overwrites a single record for a given state manager, with the following action mappings: action=Set, payload={[body], id:[id]}, state=[state], stream=[state]w
crud
product
123
123
Overwritten aggregate
PUT /api/{runner}/{state}/{id} HTTP/1.1
Host: localhost
Content-Type: application/json
Accept: */*
Content-Length: 22
{
"id": "123",
"data": {}
}
successful operation
{}
Patches a single record for a given state manager, with the following action mappings: action=Update, payload={[body], id:[id]}, state=[state], stream=[state]w
crud
product
123
123
Patched aggregate
PATCH /api/{runner}/{state}/{id} HTTP/1.1
Host: localhost
Content-Type: application/json
Accept: */*
Content-Length: 22
{
"id": "123",
"data": {}
}
successful operation
{}
Deletes a single record for a given state manager, with the following action mappings: action=Delete, payload={id:[id]}, state=[state], stream=[state]w
crud
product
123
Deleted aggregate
DELETE /api/{runner}/{state}/{id} HTTP/1.1
Host: localhost
Accept: */*
successful operation
{}
Executes multiple write actions at once using the following mappings: action=[action], inputElement=[inputElement], outputElement=[outputElement], meta=[meta]
crud
product
Create
Event meta parameters for the action requested
Action results
POST /api/{runner}/{state}/@ HTTP/1.1
Host: localhost
Content-Type: application/json
Accept: */*
Content-Length: 74
{
"action": "Create",
"inputElement": "text",
"outputElement": "text",
"meta": {}
}
successful operation
{}
This event runner accepts request metadata in "request_metadata" header, as a base64 encoded Json string.
RPC Event Runner
RPCEventRunner (com.rierino.runner.spring.RPCEventRunner) is a Spring WebFlux based runner, which accepts remote procedure call type requests through http or https protocols for more customized use cases.
The request path defines the stream and action in /api/[runner]/[stream]/[action] form, and the request body is used as the full event contents, including request metadata and payload itself.
Using /api_direct instead of /api in calls to these runners allows sending requests in payload form, without requiring full event data format. This option is usable only when making calls directly to the runners from inside the cluster, without passing them through the API gateways.
RSocket Event Runner
RSocketEventRunner(com.rierino.runner.spring.RSocketEventRunner) is a RSocket based runner, which accepts continuous requests through socket connections for low latency and frequent use cases.
Message path defines the stream and action in /api/[runner]/[stream]/[action] form, and the message payload is used as the full event contents.
Last updated