• This repository has been archived on 29/Apr/2022
  • Stars
    star
    186
  • Rank 207,316 (Top 5 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created about 8 years ago
  • Updated about 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Simple virtual bank application to showcase features of Axon Framework

Axon Bank

This is a sample application with the purpose of showing the capabilities of Axon Framework.

Domain

As you may have guessed from the name of the application, Axon Bank concerns itself with the banking domain. The application consists of 2 aggregates: bank account and bank transfer. We have tried to find an appropriate balance between complexity and simplicity. The application is meant to be complex enough to showcase interesting building blocks provided by Axon Framework. But we did not want people to get lost in the business logic of the application.

Technical Details

We have tried to keep the application self-contained. It is built with Spring Boot and therefore does not require you to have Tomcat installed.

There are two ways to run the application: on a single node and on multiple nodes using Docker.

Running the application on a single node does not require you to install any dependencies. The storage of data is all done in memory and does not require you to run an external data store.

The distributed version requires Docker and Docker Compose to be installed. There are 4 containers involved in the distributed version: 1 container running MySQL, 1 container running RabbitMQ and 2 containers running instances of Axon Bank. The MySQL server is used for the storage of events, sagas and query side data. RabbitMQ acts as a dedicated STOMP broker. STOMP is used in combination with WebSockets. The dedicated STOMP broker is needed to keep the interfaces of both Axon Bank instances in sync. The commands are distributed between the containers running Axon Bank with the DistributedCommandBus.

Usage

In order to run the single node version you may execute the following commands:

  • mvn clean install
  • java -jar web/target/axon-bank-web-0.0.1-SNAPSHOT.jar.

The distributed version can be run using the following commands:

  • mvn clean install
  • mvn -pl web docker:build
  • docker-compose up db (this will create and initialize the db container, you can stop the container after it has been initialized)
  • docker-compose up

Once all containers are running you can access each instance of Axon Bank by visiting http://localhost:8080/ and http://localhost:8081/.

More Repositories

1

AxonFramework

Framework for Evolutionary Message-Driven Microservices on the JVM
Java
3,286
star
2

Axon-trader

A sample to use the axon framework for a trading application
Java
399
star
3

extension-kafka

Axon Framework extension for Kafka integration to publish and handle Event messages.
Java
66
star
4

extension-kotlin

Axon Framework extension for Kotlin integration to ease development in Kotlin.
Kotlin
43
star
5

IdeaPlugin

An IntelliJ IDEA plugin for Axon Framework
Kotlin
33
star
6

ReferenceGuide

The Reference Guide of Axon Framework
CSS
29
star
7

extension-reactor

Axon Framework extension for integration with Project Reactor, allowing an extended reactive API.
Java
27
star
8

extension-springcloud

Axon Framework extension for Spring Cloud's Discovery mechanism integration to distribute Command messages.
Java
26
star
9

extension-mongo

Axon Framework extension for Mongo integration as a Dead Letter, Event, Saga and Tracking Token storage solution.
Java
24
star
10

Scynapse

Scynapse - the Scala API for Axon Framework
Scala
20
star
11

axon-bom

Axon Bill of Materials (BOM) - provides managed dependencies for all Axon artifacts
15
star
12

extension-tracing

Axon Framework extension to provide tracing support for messages using the OpenTracing API.
Java
13
star
13

cdi

Axon Framework CDI Support
Java
11
star
14

extension-springcloud-sample

Sample project showcasing Axon's Spring Cloud extension
Kotlin
11
star
15

extension-multitenancy

Axon Framework extension providing handles to support multi tenancy with distinct buses and stores per tenant.
Java
10
star
16

extension-amqp

Axon Framework extension for AMQP integration to publish and handle Event messages.
Java
8
star
17

extension-jgroups

Axon Framework extension for JGroups integration to distribute Command messages.
Java
7
star
18

extension-spring-aot

Axon Framework extension for Spring Ahead of Time compilation support.
Java
4
star
19

opentelemetry-samples

Samples for using OpenTelemetry with Axon Framework 4.6+
Kotlin
3
star
20

extension-jobrunrpro

Extension to integrate with the Pro version of JobRunr. This makes it possible to search and delete jobs.
Java
3
star
21

Migration-Tool

Tool to help migrate an Axon 1.x event store to the Axon 2.0 format
Java
2
star
22

extension-cdi

Axon Framework extension to support CDI integration.
Java
2
star
23

.github

Repository dedicated towards providing an GitHub organizational level README.
1
star