Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lightweight event framework for microservices #105

Merged
merged 18 commits into from
Oct 20, 2023
Merged

Lightweight event framework for microservices #105

merged 18 commits into from
Oct 20, 2023

Conversation

peterbroadhurst
Copy link
Contributor

The FFTM codebase has built-in eventing support with:

  • WebSockets support for inbound connections
  • Webhooks support for outbound connections
  • Workload managed mode: at-least-once delivery
  • Broadcast mode: at-most-once delivery
  • Batching for performance
  • Checkpointing for the at-least-once delivery assurance
  • CRUD on event streams, using DB backed storage

This PR adapts that framework to be generic, such that it can be embedded into any Golang microservice.

The source of the events can be anything with the following characteristics:

  • Events have a sequence identifier, that can be expressed as an alpha-numerically sortable string
  • Events can be replayed from a specific previous sequence ID

Some improvements in code structure have been made along the way, in making it generic.
Also E2E tests have been added that demonstrate how it could be embedded, and using a real DB + WebSockets/WebHooks delivery mechanism.

Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
…port

Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
@peterbroadhurst peterbroadhurst marked this pull request as ready for review October 20, 2023 18:15
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
@codecov-commenter
Copy link

Codecov Report

Merging #105 (c5acf45) into main (6f614c3) will decrease coverage by 0.02%.
The diff coverage is 99.90%.

@@             Coverage Diff             @@
##              main     #105      +/-   ##
===========================================
- Coverage   100.00%   99.98%   -0.02%     
===========================================
  Files           63       77      +14     
  Lines         5048     6100    +1052     
===========================================
+ Hits          5048     6099    +1051     
- Misses           0        1       +1     
Files Coverage Δ
pkg/dbsql/database.go 100.00% <100.00%> (ø)
pkg/dbsql/provider.go 100.00% <ø> (ø)
pkg/dbsql/provider_sqlitego.go 100.00% <100.00%> (ø)
pkg/eventstreams/activestream.go 100.00% <100.00%> (ø)
pkg/eventstreams/config.go 100.00% <100.00%> (ø)
pkg/eventstreams/event.go 100.00% <100.00%> (ø)
pkg/eventstreams/eventstreams.go 100.00% <100.00%> (ø)
pkg/eventstreams/manager.go 100.00% <100.00%> (ø)
pkg/eventstreams/persistence.go 100.00% <100.00%> (ø)
pkg/eventstreams/webhooks.go 100.00% <100.00%> (ø)
... and 14 more

@nguyer nguyer merged commit 4b496bf into main Oct 20, 2023
@nguyer nguyer deleted the event-minibusses branch October 20, 2023 20:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants