Overview
The processing component is the part designed for you to build. It is the part of the route that you decide what extra logic to apply to the routable message. For instance, if you pick up a file using the File component, then you could develop a processing component to read the file, apply some headers to the message and then write out to SQS. The processing components are for you to write any way you like.
Component order
The order in which you add your processing components is the order in which they will be executed. Once it has been defined in the route, it cannot be changed.
Execution Type
There are five ways in which to add a processing component:
- Concrete type
- Dependency Injection
- Type Name (reflection)
- Action delegate
- Async function delegate
General Rules
Any processing component class you create must inherit from the IProcessComponent
interface in order to be correctly added to the route.
Concrete Type
To add a concrete type to the chain, you can do the following:
Route.From()
.Process(new MyConreteType())
Dependency Injection
To add a DI based component:
Route.From()
.Process<IMyComponent>()
Type Name
It is advised to not use this method as this is provided to allow config from json to work
To add a type name based component:
Route.From()
.Process("My.Namespace.Component.Class")
Action Delegate
To add an action delegate:
Route.From()
.Process((Routable x) => {
// do some processing
})
Async Function Delegate
To add an Async function delegate:
Route.From()
.Process(async (Routable x) => {
// do some processing
await Task.CompletedTask();
})