Skip to content

Latest commit

 

History

History
116 lines (81 loc) · 4.44 KB

README.md

File metadata and controls

116 lines (81 loc) · 4.44 KB

Enterprise Integration Patterns 🏢⛓️📜

The main objective of this repository is to demonstrate the use of 🌉 integration platforms and middleware. Insights about the best practices🎖️for integrating enterprise applications were gained from the book📕Enterprise Integration Patterns by Gregor Hohpe.



Getting Started 🎬

NB:bangbang: Before running our 2 projects, make sure you have RabbitMQ running 🐰.

If you have Docker within reach 🐳 you can simply run the following command to start it:

docker run --rm --name rabbitMQ -p 15672:15672 -p 5672:5672 rabbitmq:management

Optional: To make sure RabbitMQ is running, navigate to localhost:15672in your browser

NB:bangbang:Make sure you have .Net Core 3.0 installed on your system.

To start the services you'd need to navigate to the src directory and execute the start.sh.
Next, start the Client service by running dotnet run in src/Client folder.



Business Scenario 💼

Written description of the depicked scenario can be found in a pdf format.

BPMN



Application architecture 🏗️

We have 6 services within this project:

Client - This is the main CLI that the customer will use. It takes input from the user and using queues makes requests to the necessary services. It also has an active listener on new notifications so there is a centralized way of sending information back to the client.

Reservation - It is used to keep track of reservations that have been made on the system. It can take requests for new reservations and orchestrates some of the processes needed to complete one.

Package - The package service serves the purpose of keeping deals available to the clients. These packages are the actual consumable for the client which will have the choice between a few of them.

Car - Acts as a repository. It keeps knowledge about the current cars existing in the system, including their prices and descriptions.

Notification - As mentioned before the notifications system is the centralized way of talking back to the client. It takes a message and some command which when passed to the client will lead to certain actions being executed.

Payment - A very simple implementation of a payment service. It takes requests which include credit card information and randomly decides if this card should be accepted or declined.


The following architecture diagrams provide an insight (various sequential scenarious) on how the software implementation has been made:

Reservation initiation


Packages generation process


Choosing a package deal


Declining an offer


Payment process



The entire software architecture can be seen below:

Architecture



Software Implementation ⌨️

Our solution illustrates the implementation of at least 5️⃣ enterprise integration patterns:

  • Messaging Gateway - as a class to wrap messaging-specific method calls
  • Correlation Identifier - assigns the request a request ID that will be used to processes the reply ( by correlation Id - we know which request the reply is for)
  • Point-To-Point - RPC
  • Publish-Subscribe Channel - when sending notifications
  • Message-Translator - translate one data format into another
  • Command Message
  • Others

The data processed by the application exists in two different formats - JSON and XML.



Assignment made by:

David Alves 👨🏻‍💻 :octocat: Github
Elitsa Marinovska 👩🏻‍💻 :octocat: Github

Attending "System Integration" course of Software Development bachelor's degree