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.
- 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.
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.
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
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 up
command in your shell- Navigate to
http://<SERVER_IP_OR_HOST>:5101
for API project - Navigate to
http://<SERVER_IP_OR_HOST>:5100
for UI project
- Navigate to
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\"}}"
We are grateful to the community for contributing bug fixes and improvements. Read below to learn how you can take part in improving EvenTransit.
You have installed the prerequisites below.
- .Net 6.0
- RabbitMq
- MongoDB
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
EvenTransit uses either the MIT or Apache 2 licenses for code.