FFWD Components
This document covers some of the major components in FastForward.
Module
A module is a loadable component that extends the functionality of FastForward.
When a module is loaded it typically registers a set of plugins.
Plugin
Either an input or an output plugin.
This provides the implementation to read or send data from the agent.
A plugin can have multiple instances with different configurations (like
which port to listen to).
Early Injector
The early injector is setup by AgentCore and is intended to provide the basic
facilities to perform module setup.
The following is a list of components that are given access to and their
purpose.
- com.spotify.ffwd.module.PluginContext
Register input and output plugins.
- com.fasterxml.jackson.databind.ObjectMapper (config)
ObjectMapper used to parse provided configuration file.
Primary Injector
The primary injector contains the dependencies which are available after
modules have been registered and the initial bootstrap is done.
It contains all the components of the early injector, with the following
additions.
- eu.toolchain.async.AsyncFramework - Framework implementation to use for
async operations.
- io.netty.channel.EventLoopGroup (boss) Event loop group used for boss
threads in ServerBootstrap’s.
- io.netty.channel.EventLoopGroup (worker) Event loop group used for
worker threads in {Server}Bootstrap’s.
- com.spotify.ffwd.protocol.ProtocolServers - Framework for setting up
servers in a simple manner.
- com.spotify.ffwd.protocol.ProtocolClients - Framework for setting up
clients in a simple manner.
- io.netty.util.Timer - A timer implementation.
- com.fasterxml.jackson.databind.ObjectMapper (application/json)
Used to decode/encode JSON.