Microservices project with CQRS, Event sourcing and Event-driven design.

Overview

for more details about the project, please check the attached pdf document "Walkthrough_SpringBoot_Microservices_Project"

To Run the project :

download axon server : https://download.axoniq.io/axonserver/AxonServer.zip then run it and run rabbitmq via docker:

cd AxonServer
java -jar axonserver.jar
docker run --rm -it -p 15672:15672 -p 5672:5672 rabbitmq:3-management

then run each microservice independently(Command microservice, Query microservice, Discovery Server and APIGateway).

then run elasticsearch with docker

sudo docker run -p 9200:9200-e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.0

To test the app

send post request: with the following body

http://localhost:8087/product
{
    "title":"souris",
    "price":1000,
    "quantity":2
}

get data via this api

http://localhost:8082/products-query-service/products

Overall Architecture

GitHub Logo

Requierments

The ProductsCommandService microservice uses axon server as an event store:

Axon Server

It is an easy-to-use, easy-to-manage platform to handle all events, commands and queries as an event store.

download link :

https://download.axoniq.io/axonserver/AxonServer.zip

extract the file and run

cd AxonServer
java -jar axonserver.jar

RabbitMQ message broker is used to assure an asynchronous communication between the Command microservice and the Query microservice

RabbitMQ

Run using ready-to-use docker image:

docker run --rm -it -p 15672:15672 -p 5672:5672 rabbitmq:3-management

ElasticSearch

Run using ready-to-use docker image:

sudo docker run -p 9200:9200-e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.0
You might also like...

Open Source Identity and Access Management For Modern Applications and Services

Keycloak Keycloak is an Open Source Identity and Access Management solution for modern Applications and Services. This repository contains the source

Jan 5, 2023

This application can recognize the sign language alphabets and help people who do not understand sign language to communicate with the speech and hearing impaired.

This application can recognize the sign language alphabets and help people who do not understand sign language to communicate with the speech and hearing impaired.

Sign Language Recognition App This application can recognize the sign language alphabets and help people who do not understand sign language to commun

Oct 7, 2021

JAP is an open source authentication middleware, it is highly decoupled from business code and has good modularity and flexiblity. Developers could integrate JAP into web applications effortlessly.

JAP is an open source authentication middleware, it is highly decoupled from business code and has good modularity and flexiblity. Developers could integrate JAP into web applications effortlessly.

🎨 JAP 是什么? JAP 是一款开源的登录中间件,基于模块化设计,并且与业务高度解耦,使用起来非常灵活,开发者可以毫不费力地将 JAP 集

Dec 1, 2022

Examples and HowTos for BouncyCastle and Java Cryptography Extension (JCE)

CryptographicUtilities Examples and HowTos for BouncyCastle and Java Cryptography Extension (JCE) See class "/src/main/java/de/soderer/utilities/crypt

Dec 19, 2021

Make a customized list of exercises, create and save workouts, and be led through your routine. This application is currently under development.

HIIT Workout Builder ABOUT This application allows you to create and be led through customized high-intensity interval training (HIIT) sessions. The a

Nov 28, 2022

Toloka has a powerful open API, it allows you to integrate an on-demand workforce directly into your processes, and to build scalable and fully automated human-in-the-loop ML pipelines.

Toloka has a powerful open API, it allows you to integrate an on-demand workforce directly into your processes, and to build scalable and fully automated human-in-the-loop ML pipelines.

Toloka Java SDK Documentation Website | API Documentation | Platform Designed by engineers for engineers, Toloka lets you integrate an on-demand workf

Apr 27, 2022

A small and easy-to-use one-time password generator library for Java according to RFC 4226 (HOTP) and RFC 6238 (TOTP).

OTP-Java A small and easy-to-use one-time password generator for Java according to RFC 4226 (HOTP) and RFC 6238 (TOTP). Table of Contents Features Ins

Dec 30, 2022

Time-Based One-Time Password (RFC 6238) and HMAC-Based One-Time Password (RFC 4226) reference implementations and more.

Crypto Time-Based One-Time Password (RFC 6238) and HMAC-Based One-Time Password (RFC 4226) reference implementations and more. Getting Started TOTP ge

May 12, 2022
Owner
null
Unixcounter - The new unixcounter project. Based on JavaEE + VueJS (server) and POSIX shell (client)

The Unix Counter Table of Contents Description Contributing Documentation Installation License This is the successor of the Linux Counter Project, whi

The Linux Counter Project 9 Dec 23, 2022
JNDI-Exploit is an exploit on Java Naming and Directory Interface (JNDI) from the deleted project fromthe user feihong on GitHub.

JNDI-Exploit JNDI-Exploit is a fork from the deleted project ftom the user feihong-cs on GitHub. To learn more about JNDI and what you can do with thi

Nil MALHOMME 4 Dec 6, 2022
Java Project based on Java and Encryption using Cryptography algorithms

Symmetric-Encryption-Cryptography-in-Java Java Project based on Java and Encryption using Cryptography algorithms Project Aim Develop Java program to

Muhammad Asad 6 Feb 3, 2022
Advanced Programming Final Project

Clash Royale Advanced Programming Final Project Clash Royale By Java July 2021 Requirements Java and JavaFx SDK MySQL Database Screenshots How to run

Ashkan Shakiba 12 Oct 11, 2022
Simple Hospital Managers Project GUI Java

Hospital-Managers-GUI-Java Simple Hospital Managers Project GUI Java To Run Code You just need to run MainClass.java in any IDE I make a YouTube Video

Ali Abdollahian Noghabi 2 Feb 4, 2022
This project was done as a part of Hug61B taught by Josh Hug.

byow This project was done as a final project for Hug61B taught by UC Berkeley's Josh Hug, The main aim of this project was to design a world generati

Red Hot Chili Coders 3 Sep 2, 2021
2211-01-a-OMW2PCAFYB's Web Checkers Project

WC-2211-01-a-OMW2PCAFYB 2211-01-a-OMW2PCAFYB's Web Checkers Project This is the Web Checkers Project as established by SWEN-261 @ RIT Link to page: ht

Aidan Mellin 2 Oct 21, 2021
Messenger - A Java based project making use of Sockets for communication between the applications running on different JRE

Messenger - A Java based project making use of Sockets for communication between the applications running on different JRE. Multiple clients can connect at the same time and can send messages to each other, they also get the information of status of their friends connected to the server .

Sarthak Aggarwal 1 Jan 2, 2022
Encryption/Decryption - University Project

J-Crypt By JayMar921 Encryption/Decryption - University Project J-Crypt is a Java Program that encrypt/decrypts a String. You can use your own key for

JayMar 2 Nov 4, 2021
A small and easy-to-use one-time password generator library for Java according to RFC 4226 (HOTP) and RFC 6238 (TOTP).

OTP-Java A small and easy-to-use one-time password generator for Java according to RFC 4226 (HOTP) and RFC 6238 (TOTP). Table of Contents Features Ins

Bastiaan Jansen 106 Dec 30, 2022