https://github.com/tideland/go-cells
Light-weight event-processing based on the idea of meshed cells with different pluggable behaviors
https://github.com/tideland/go-cells
cep data-analysis data-stream event-processing events golang
Last synced: 10 months ago
JSON representation
Light-weight event-processing based on the idea of meshed cells with different pluggable behaviors
- Host: GitHub
- URL: https://github.com/tideland/go-cells
- Owner: tideland
- License: bsd-3-clause
- Created: 2021-03-31T10:08:03.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2022-12-30T22:33:25.000Z (about 3 years ago)
- Last Synced: 2024-06-21T02:16:53.128Z (over 1 year ago)
- Topics: cep, data-analysis, data-stream, event-processing, events, golang
- Language: Go
- Homepage:
- Size: 84 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Tideland Go Cells
[](https://github.com/tideland/go-cells)
[](https://raw.githubusercontent.com/tideland/go-cells/master/LICENSE)
[](https://github.com/tideland/go-cells/blob/master/go.mod)
[](https://pkg.go.dev/mod/tideland.dev/go/cells?tab=packages)

[](https://goreportcard.com/report/tideland.dev/go/cells)
## Description
**Tideland Go Cells** provides a light-weight event-processing. It is realized
as a mesh of cells which can subsribe to each other. One cell can subscribe to
multiple cells as well as multiple cells can subscribe to one cell. Each cell
runs an individual developed and/or configured behavior with an own state.
I hope you like it. ;)
## Behaviors
The project already contains some standard behaviors, the number is still growing.
- **Aggregator** aggregates events and emits each aggregated value.
- **Broadcaster** simply emits received events to all subscribers.
- **Callback** calls a number of passed functions for each received event.
- **Collector** collects events which can be processed on demand.
- **Combo** waits for a user-defined combination of events.
- **Condition** tests events for conditions using a tester function and calls a
processor then.
- **Countdown** counts a number of events down to zero and executes an event returning
function. The event will be emitted then.
- **Counter** counts events, the counters can be retrieved.
- **Evaluator** evaluates events based on a user-defined function which returns a rating.
- **Filter** re-emits received events based on a user-defined filter. Those can be including
or excluding.
- **Mapper** allows to analyse events and map them into new one for emitting.
- **One-Time** processes a user defined function only once for the first event, it will never
called again. Outgoing events can be emitted during processing.
- **Pairer** allows to define a criterion for a first and second evend and a timeout
between those. Matches and timouts will be emitted.
- **Rate Evaluator** measures times between a number of criterion fitting events and
emits statistical data about these fittings.
- **Rate Window Evaluator** checks if a number of events in a given timespan matches
a given criterion. In case it processes them.
## Contributors
- Frank Mueller (https://github.com/themue / https://github.com/tideland / https://tideland.dev)