LogoLogo
Home
Core Platform
Core Platform
  • Introduction
    • Overview
    • Use Cases
    • Architecture
    • Built with ML & AI
    • Quick Start
  • Examples
    • Training Examples
      • API Flow Examples
      • Microservice Examples
      • UI Example
      • Exercise: Hello World API
      • Exercise: Test State
      • Exercise: Test UI
    • Exercise: To-do List
      • To-do List Runner
      • To-do List Gateway
      • To-do List UI
      • To-do List Query
  • Troubleshooting
    • Rierino Packages
    • Release Notes
    • Useful Checks
    • Error Codes
  • Devops
    • Overview
    • API Flows
      • Using the Saga Screen
      • Defining a Saga
      • Configuring Saga Steps
        • Event Step
        • Transform Step
          • Transform Classes
        • Condition Step
          • Condition Classes
        • Step Link
      • Injecting Variables
    • Microservices
      • Runners
        • Using the Runner Screen
        • Defining a Runner
        • Managing Runner Settings
        • Adding Runner Elements
        • Deploying Runners
          • Spring Runners
          • Samza Runners
          • Camel Runners
      • Elements
        • Systems
        • State Managers
          • Typical Use Cases
          • State Data Structure
          • Local States
            • In-Memory Map
            • Caffeine Cache
            • Samza Based
            • Lucene Based
            • Single File
            • Multiple Files
            • Selected IDs Map
            • Indexed Map
          • Shared States
            • MongoDB Collection
            • Jooq (SQL) Table
            • Redis Map
            • Couchbase Collection
            • Elasticsearch Index
            • Elasticsearch Joined
            • Etcd Namespace
          • Specialized States
            • CRUD Service
            • Odata Service
          • State Coordinators
            • Lazy Cache Coordinator
            • Event Store Coordinator
            • Write thru Coordinator
          • Loading Strategies
          • ID Generators
        • Listeners
        • Query Managers
          • MongoDB
          • Elasticsearch
          • Lucene
          • SQL Based
          • Odata Service
        • Handlers
          • Core Handlers
            • Write Data
            • Read Data
            • Query Data
            • Apply Rules
            • Call Rest API
            • Generate Text/Html
            • Parse Html
            • Generate Secrets
            • Orchestrate User Task
            • Perform File Operation
            • Run Shell Command
            • Send/Receive Emails
          • Custom Code Handlers
            • Run Scripts
            • Run Java Code
            • Run Java Package
          • Flow Handlers
            • Orchestrate Saga
            • Loop Each Entry
            • Run Multiple Steps
            • Buffer Payloads
            • Merge Parallel Steps
            • Log Event
            • Send Event
            • Validate Event
            • Transform Event
            • Perform DB Transaction
            • Trigger Runner Command
            • Do Nothing
            • Modify Role Data
            • Enrich Role Data
            • Convert Pulse to Journal
          • Gateway Handlers
            • Authenticate
              • No Authentication
              • State Based
              • Keycloak Based
            • Sessionize
          • Specialized Handlers
            • Apply Advanced Rules
            • Calculate Real-time Metrics
            • Score ML Models
            • Score LangChain Models
            • Service MCP Requests
            • Service A2A Requests
            • Consume Web of Things
            • Perform Text Embedding
            • Run Python Procedure
            • Generate Excel
            • Generate PDF
            • Call SOAP API
            • Integrate with Camel
        • Actions
        • Streams
          • Kafka Topic
          • CDC Feed
          • Camel Component
        • Roles
        • Generic Settings
        • Global Settings
      • Deployments
        • Defining a Deployment
        • Alternative Loaders
    • Gateway & Security
      • Gateway Servers
        • Gateway Systems
        • Gateway Channels
        • Gateway Services
        • Gateway Tokens
      • APIs
        • OpenAPI Specification
        • Response Formats
    • Administration
      • Managing Deployments
      • Sending Commands
      • Streaming Messages
      • Migrating Assets
    • Batch Tasks
      • Python Processes
      • Python Iterators
      • Python Processors
    • Pro-Code
      • Custom Handlers
      • Custom State Managers
      • Custom Query Managers
      • Custom CDC Managers
  • Design
    • Overview
    • User Interface
      • Apps
      • UIs
        • Listers
        • Widgets
          • Value Widgets
          • Array Widgets
          • Object Widgets
          • Indirect Widgets
          • Atom Widgets
        • Menus
          • Lister Menu Actions
          • Selection Menu Actions
          • Editor Menu Actions
          • Widget Menu Actions
          • Custom Menu Actions
          • RAI Menu Actions
        • Extended Scope
          • Conditional Display
          • Data Context
          • Extra Data
          • Default Item
          • Extra Events
      • Options
      • Translations
      • Icons
      • Styles
      • Components
    • API Mapping
    • Data Schema
      • Common Data
  • Configuration
    • Overview
    • Queries
      • Query Types
      • Query Platforms
        • MongoDB Queries
        • Odata Queries
        • SQL Queries
        • Elasticsearch Queries
        • Lucene Queries
        • Siddhi Queries
    • Business Rules
      • Drools Rules
    • Dynamic Handlers
  • Data Science
    • Overview
    • ML Models
      • Scheduler Platforms
        • Airflow Scheduler
    • GenAI Models
    • MCP Servers
    • Complex Event Processing
      • Siddhi Data Flows
    • Data Visualizations
    • Customizations
  • EXTENSIONS
    • JMESPath
    • Handlebars
Powered by GitBook

© Rierino Software Inc. 2025. All rights reserved.

On this page
  1. Devops
  2. Microservices
  3. Runners
  4. Deploying Runners

Spring Runners

These runners are based on Java Spring library.

PreviousDeploying RunnersNextSamza Runners

Last updated 4 months ago

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 :

Parameter
Definition
Example
Default

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:

Parameter
Definition
Example
Default

rierino.runner.[name].authentication.token

API key used for authenticating requests

DEMO

-

Hashed Authentication

Parameter
Definition
Example
Default

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

-

Authentication cache state can be a shared state manager, allowing use of predefined and hashed list of API keys and roles without using Sagas to produce them.

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:

CRUD event runner also supports using /[action]_[state] Saga flows for these requests if the input stream is mapped to a Saga event handler.

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.

Spring runners can listen to Kafka streams, but only for command, journal and pulses (and not events or other role data).

Gateway & Security
SpringSpring
Spring Page
Logo

List records

get

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
Path parameters
runnerstringRequiredExample: crud
statestringRequiredExample: product
Query parameters
skipstringOptionalExample: 0
limitstringOptionalExample: 10
fieldsstringOptionalExample: data.name,data.description
orderBystringOptionalExample: id asc
idsstringOptionalExample: 123,234
Responses
200
successful operation
application/json
get
GET /api/{runner}/{state} HTTP/1.1
Host: localhost
Accept: */*
200

successful operation

{
  "list": [
    {}
  ]
}

Read a record

get

Reads a single record for a given state manager, with the following action mappings: action=Get, payload={id:[id]}, state=[state], stream=[state]r

Path parameters
runnerstringRequiredExample: crud
statestringRequiredExample: product
idstringRequiredExample: 123
Query parameters
fieldsstringOptionalExample: data.name,data.description
Responses
200
successful operation
application/json
Responseobject

Found aggregate

get
GET /api/{runner}/{state}/{id} HTTP/1.1
Host: localhost
Accept: */*
200

successful operation

{}

Delete a record

delete

Deletes a single record for a given state manager, with the following action mappings: action=Delete, payload={id:[id]}, state=[state], stream=[state]w

Path parameters
runnerstringRequiredExample: crud
statestringRequiredExample: product
idstringRequiredExample: 123
Responses
200
successful operation
application/json
Responseobject

Deleted aggregate

delete
DELETE /api/{runner}/{state}/{id} HTTP/1.1
Host: localhost
Accept: */*
200

successful operation

{}
  • Authentication
  • Simple Authentication
  • Hashed Authentication
  • CRUD Event Runner
  • GETList records
  • GETRead a record
  • POSTCreates a record without given ID
  • POSTCreates a record with given ID
  • PUTOverwrite a record
  • PATCHPatch a record
  • DELETEDelete a record
  • POSTPerform write actions
  • RPC Event Runner
  • RSocket Event Runner

Creates a record without given ID

post

Creates a single record for a given state manager, with the following action mappings: action=Create, payload={[body]}, state=[state], stream=[state]w

Path parameters
runnerstringRequiredExample: crud
statestringRequiredExample: product
Body
dataobjectOptional
Responses
200
successful operation
application/json
Responseobject

Created aggregate

post
POST /api/{runner}/{state} HTTP/1.1
Host: localhost
Content-Type: application/json
Accept: */*
Content-Length: 11

{
  "data": {}
}
200

successful operation

{}

Creates a record with given ID

post

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

Path parameters
runnerstringRequiredExample: crud
statestringRequiredExample: product
idstringRequiredExample: 123
Body
idstringOptionalExample: 123
dataobjectOptional
Responses
200
successful operation
application/json
Responseobject

Created aggregate

post
POST /api/{runner}/{state}/{id} HTTP/1.1
Host: localhost
Content-Type: application/json
Accept: */*
Content-Length: 22

{
  "id": "123",
  "data": {}
}
200

successful operation

{}

Overwrite a record

put

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

Path parameters
runnerstringRequiredExample: crud
statestringRequiredExample: product
idstringRequiredExample: 123
Body
idstringOptionalExample: 123
dataobjectOptional
Responses
200
successful operation
application/json
Responseobject

Overwritten aggregate

put
PUT /api/{runner}/{state}/{id} HTTP/1.1
Host: localhost
Content-Type: application/json
Accept: */*
Content-Length: 22

{
  "id": "123",
  "data": {}
}
200

successful operation

{}

Patch a record

patch

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

Path parameters
runnerstringRequiredExample: crud
statestringRequiredExample: product
idstringRequiredExample: 123
Body
idstringOptionalExample: 123
dataobjectOptional
Responses
200
successful operation
application/json
Responseobject

Patched aggregate

patch
PATCH /api/{runner}/{state}/{id} HTTP/1.1
Host: localhost
Content-Type: application/json
Accept: */*
Content-Length: 22

{
  "id": "123",
  "data": {}
}
200

successful operation

{}

Perform write actions

post

Executes multiple write actions at once using the following mappings: action=[action], inputElement=[inputElement], outputElement=[outputElement], meta=[meta]

Path parameters
runnerstringRequiredExample: crud
statestringRequiredExample: product
Body
actionstringOptionalExample: Create
inputElementstringOptional
outputElementstringOptional
metaobjectOptional

Event meta parameters for the action requested

Responses
200
successful operation
application/json
Responseobject

Action results

post
POST /api/{runner}/{state}/@ HTTP/1.1
Host: localhost
Content-Type: application/json
Accept: */*
Content-Length: 74

{
  "action": "Create",
  "inputElement": "text",
  "outputElement": "text",
  "meta": {}
}
200

successful operation

{}