EvenTransit
November 29, 2023 · View on GitHub
EvenTransit is a production-ready solution that transfers events into relevant service(s) in a distributed way. Distributed messages are handled by built-in RabbitMQ implementation.
Highlights
- Language agnostic way to implement distributed messaging. Best fit for microservices.
- Everything is a simple HTTP request.
- Super easy configuration.
- Connection and channel management.
- Failure management. (Retry logic.)
- Fully compatible with containerized environments such as Kubernetes.
Dependencies
Message Processing Mechanism
An event is published into the EvenTransit service. EvenTransit transfers published messages into the event's exchange. This exchange delivers the message to all bound queues. Each queue consumer makes an HTTP call with the message to external services.
System Architecture
Retry Mechanism
The retry mechanism involves the occurrence of an error from external services. The delivered message is transferred into the retry exchange and queue. The message waits 30 sec before it is republished. EvenTransit tries to message to publish 5 times. Each HTTP call is logged into the database.
Used Dead Letter Exchange and Dead Letter Queue patterns
Installation
To get started locally, follow these instructions:
- Clone to your local computer using
git - Make sure that you have
.Net 5.0 - Run
docker-compose upcommand in your shell- Navigate to
http://<SERVER_IP_OR_HOST>:5101for API project - Navigate to
http://<SERVER_IP_OR_HOST>:5100for UI project
- Navigate to
Usage
Publish an event with the command below
curl -X POST "https://localhost:5010/api/v1/event" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-d "{\"eventName\":\"order_created\",\"payload\":{\"name\":\"test\"}}"
Dashboard
Contribution
We are grateful to the community for contributing bug fixes and improvements. Read below to learn how you can take part in improving EvenTransit.
Contribution Prerequisites
You have installed the prerequisites below.
- .Net 6.0
- RabbitMq
- MongoDB
Sending a Pull Request
Before submitting a pull request, please make sure the following is done:
- Fork the repository and create your branch from
main. - Make sure you use Gitflow branching model
- Don't forget to add new feature explanations to the documentation
Licenses
EvenTransit uses either the MIT or Apache 2 licenses for code.