Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jofaval/choreography-microservices
Event-Driven Microservices with Kafka and Choreography as the consistency pattern
https://github.com/jofaval/choreography-microservices
choreography csharp go golang java kafka microservices node php pnpm python ruby typescript zod
Last synced: 26 days ago
JSON representation
Event-Driven Microservices with Kafka and Choreography as the consistency pattern
- Host: GitHub
- URL: https://github.com/jofaval/choreography-microservices
- Owner: jofaval
- License: apache-2.0
- Created: 2023-12-15T19:38:37.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2023-12-24T16:32:59.000Z (11 months ago)
- Last Synced: 2024-10-04T00:40:20.077Z (about 1 month ago)
- Topics: choreography, csharp, go, golang, java, kafka, microservices, node, php, pnpm, python, ruby, typescript, zod
- Language: PHP
- Homepage:
- Size: 51.8 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Choreography Microservices
Event-Driven Microservices with Kafka and Choreography as the consistency pattern
## Why
This was a laboratory for the High-Potential Technical Booster hosted at EDEM and sponsored by Capgemini
### Source
https://github.com/ccsw-csd/shop-cart-public
### Reference
https://github.com/ccsw-csd/shop-cart
## Data Flow
```mermaid
flowchart LR;
shop_order[Shop Orders]-->|OK|stock[Stock];stock-->|KO|shop_order;
stock-->|OK|payment[Payments];payment-->|KO|stock;
payment-->|OK|shipment[Shipments];shipment-->|KO|payment;
shipment-->|OK|invoice[Invoices];invoice-->|KO|shipment;
invoice-->|OK|shop_order;shop_order-->|KO|notification[Notifications];
shop_order-->|OK|notification;notification-->a("Send Notification");
```## Structure
- scripts, e2e testing
- server, kafka and zookeeper, WIP
- src, microservices## Language Philosophy
Trying not to default to Java, each microservice is written in a different language
- Ruby -> shop_orders
- C# -> stocks
- Golang -> payments
- PHP -> shipments
- Python -> invoices
- Node -> notifications## Testing
Each microservice owns their own testing strategy.
The payloads are defined in the microservice, as a json fileThere's a root script to execute every single e2e testing of each microservice in order
## Handlers
```java
class ServiceHandler {
public ShopOrderRequest shopOrderRequest;// ...
public void success() {
}
public void fail() {
}
public void process() {
}
}
```