This repository has been archived by the owner on Nov 1, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Create rabbitmq_basics.md * Create vlingo_basics.md
- Loading branch information
Showing
2 changed files
with
60 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
### RabbitMQ | ||
|
||
RabbitMQ is a middleware for message exchange (message broker) in heterogeneous software systems. | ||
Important tasks of a message broker are for example: | ||
|
||
- Connection of heterogeneous software systems | ||
- Receiving and sending messages | ||
- Scalability of message switching | ||
- Translation between message formats of senders and receivers | ||
- Creation of a fail-safe and sufficiently fast communication for the application | ||
|
||
RabbitMQ is released under the "Mozilla Public License Version 2.0", written in Erlang and built on the "Advanced Message Queueing Protocol (AMQP)". The functionality is defined by three basic building blocks: Producer, Message Queue and Consumer. Message transmission is customizable using various distribution methods, so-called "Exchanges", depending on the application. | ||
The following exchanges are included in AMQP: | ||
|
||
- Direct - message is written to a specific MQ using a specified key. | ||
|
||
- Fanout - message is written to any available MQ | ||
- Topic - message is written to at least one MQ by specified rules or pattern of keys. | ||
at least one MQ | ||
- Headers - message is written to at least one MQ depending on the content. | ||
|
||
Due to its underlying lightweight structure, RabbitMQ is suitable for use as a message broker during the development phase of heterogeneous software systems. At the same time, however, RabbitMQ is also suitable for productive use in distributed systems, since it allows message distribution to consumers working in parallel, is horizontally scalable through redundant instances, and is also suitable for complex message transmissions through the use of different routing methods. | ||
|
||
Furthermore, programming interfaces exist for a variety of different programming languages (e.g. Java, Python, JavaScript, Go, etc.), enabling the (further) development of heterogeneous software systems by different development teams and the use of different technologies. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# VLINGO | ||
|
||
## Background | ||
The project was started by Vaughn Vernon. After positive feedback, the VLINGO/PLATFORM project was created under the leadership of Vaughn Vernon with the help of the community. Developers who have worked their way into the customer's domain, for example with event storming, should be able to use VLINGO to quickly get started developing an application. | ||
|
||
VLINGO/PLATFORM follows the three principles of "simplicity", "model fluency" and "DDD-friendly" and, according to its developers, this combination clearly sets it apart from other frameworks. The complexity of concurrent processes is to be reduced and the development around the business logic is to be put in the foreground. | ||
|
||
From a technical perspective, VLINGO/PLATFORM is a collection of open source tools designed with a reactive architecture. Domain-driven design (DDD) is at the forefront of development with VLINGO. It also focuses on an event-driven and microservice-oriented architecture. | ||
|
||
A responsive architecture has four key characteristics: | ||
|
||
- Responsive - Provide fast and consistent response times. | ||
- Resilient - the system remains responsive even in the event of a failure | ||
- Elastic - The system can handle fluctuating loads | ||
- Message Driven - Asynchronous messaging for communication. | ||
|
||
For more information on responsive systems click [here](https://www.reactivemanifesto.org). | ||
|
||
|
||
The following figure visualizes the components that make up VLINGO/PLATFORM: | ||
|
||
![alt text](https://gblobscdn.gitbook.com/assets%2F-LLB-V2sJmANuWISDmBf%2F-M9CUGIjqvocvRm5c5Jb%2F-M9H0FwLGxPXIMkLGEwd%2FVLINGO_PLATFORM.png?alt=media&token=418a86e0-859d-4806-87f2-a651c01fffca "VLINGO/PLATFORM structure") | ||
|
||
Source: https://docs.vlingo.io | ||
|
||
### VLINGO/XOOM & Starter | ||
The starter can be used to quickly generate new DDD projects with a focus on microservice architecture. The starter can be used via a GUI in the browser, or with a configuration file in the console. | ||
|
||
### VLINGO/HTTP | ||
VLINGO provides a reactive HTTP server that handles concurrent, non-blocking requests. | ||
|
||
### VLINGO/ACTORS | ||
VLINGO provides an implementation of the "Actor model" with this component. The actors are the basis for the reactive architecture and foundation of the framework. They enable asynchronous and type-safe message exchange. Another advantage is the abstraction of the complex implementation of concurrent processes. Concurrency plays an increasingly important role in modern systems, since CPUs have been relying on a higher number of cores for several years and applications with many users must be able to process requests in parallel. (Geer, 2005) | ||
|
||
For more information on the components of VLINGO, the official documentation can be used: | ||
https://docs.vlingo.io |