Agent Configuration
Examples Repo
Example configuration files showcasing all features we will discuss can be found in our Examples Repo .
Agent objects configure entities in the agent section of the configuration file.
The agent section accepts a single agent object or an array of agent objects.
Here is a list of available fields for agent objects:
| Field | Required | Description |
|---|---|---|
name |
true if uri is absent |
The name of the agent, used to create a URI and match to a relay. |
uri |
true if name is absent |
Explicit URI pattern for the agent. |
patches |
false |
Patches to compose agent behavior. |
Only one of name or uri should be used in the agent section depending on the relay that references it.
Use name if the relay uses the agent field to specify which agent should handle the received data, and use uri if the relay uses the node field to build a complex node URI for relaying data.
Adding Behavior to Entities with Patches
In Nstream-Jet, you can enhance the functionality and behavior of entities by applying patches to agents.
Patches allow you to modify or extend the default behavior of agents, enabling customized processing, retention policies, and other advanced features.
The patches field in the agent section of the configuration file is used to define these modifications, accepting either a single patch object or an array of patch objects.
The available patches are:
| Type | Description |
|---|---|
latest |
Stores the most recent event. |
history |
Stores a timestamp-keyed map of events. |
group |
Collects entities with some common property into a group. |
geopoint |
Extracts and stores geolocation data for map rendering. |
If the patches field is omitted or empty, the agent will by default gain the latest and history patch.
The type field is the only required common field across all patches, other fields being specific to the patch and used to modify behavior.
If no other fields are defined in the patch object (the patch has default behavior), the patch object can be reduced to just the type value.
"patches": [
"latest",
{
"type": "history",
"retentionCount": 10
}
]
Here we accept the default behavior of the latest patch and modify the history patch.
latest
The latest patch is the simplest patch available, storing each new message received in the latest lane.
The patch cannot be configured or modified and so no other fields are available.
history
The history patch will store each message received in the history map lane, keyed by timestamp.
The patch provides these fields for customization:
| Field | Default Behavior | Description |
|---|---|---|
retentionCount |
No limit | Max size of the history map. |
keyExtractor |
Receipt time | Extract key/timestamp from message, if the message contains no timestamp then use receipt time. |
valueExtractor |
Whole message | Extract value from message. |
group
The group patch will collect groups of agents with some common field and create separate group agents.
The patch provides these fields for customization:
| Field | Default | Description |
|---|---|---|
groupExtractor |
Extract the group identifier from message. | |
groupUriPattern |
/group/:group |
The group URI pattern - only a single pattern part. |
geopoint
The geopoint patch will extract geolocation data from messages and add agents to map tiles for map rendering.
The patch provides these fields for customization:
| Field | Default | Description |
|---|---|---|
longitude |
The static longitude of the agent. | |
latitude |
The static latitude of the agent. | |
longitudeExtractor |
$longitude |
Extract the longitude from a message. |
latitudeExtractor |
$latitude |
Extract the latitude from a message. |
valueExtractor |
Extract the value from a message. |
Nstream is licensed under the Redis Source Available License 2.0 (RSALv2).