An open API service indexing awesome lists of open source software.

https://github.com/daggerok/node-cqrs

This repository contains CQRS application using node/express, servicebus-* + rabbitmq mongo and docker (e2e tests with swarm cluster included)
https://github.com/daggerok/node-cqrs

cqrs docker docker-cluster docker-compose docker-stack docker-stack-deploy docker-swarm docker-swarm-cluster mongodb mongoose nodejs rabbitmq servicebus

Last synced: 7 months ago
JSON representation

This repository contains CQRS application using node/express, servicebus-* + rabbitmq mongo and docker (e2e tests with swarm cluster included)

Awesome Lists containing this project

README

          

= node-cqrs image:https://travis-ci.org/daggerok/node-cqrs.svg?branch=master["Build Status", link="https://travis-ci.org/daggerok/node-cqrs"]

This repository contains CQRS application using node/express, servicebus-* + rabbitmq mongo and docker (swarm cluster included)

_TODO: not yet finished..._

----
(ui update data) >>
[produce command] >>
[handle rabbit event] >>
[save data into eventstore mongodb (master node)]
...
eventual consistency
...
(ui fetch data) >> | pooling | websockets | backpreassure
[query view / projection] >>
[get data from mongodb (replica node)]
----

done:

. implemented docker infrastructure: rabbitmq, mongo
. message-frontend app
. message-command app
. message-store app

.send message via REST API to RabbitMQ message broker
[sources,bash]
----
http post :3001/api/v1/messages content='some data as messages.create type event'
----

.automation e2e tests using docker swarm / docker stack deploy (required docker / swarm / compose and httpie installed)
[sources,bash]
----
yarn -i
bash e2e-tests/docker-swarm.bash
----

.automation e2e tests using docker-compose (required docker compose and httpie installed)
[sources,bash]
----
yarn -i
bash e2e-tests/docker-compose.bash
----

.manual e2e testing using docker-compose (required docker compose and httpie installed)
[sources,bash]
----
yarn -i
docker-compose -f docker/docker-compose-application-services.yml up -d --build
http :3001
docker-compose -f docker/docker-compose-application-services.yml down -v
----

.development
[sources,bash]
----
yarn -i
yarn start
yarn stop

yarn global add npm-check-updates
ncu -u
----

links:

. link:http://expressjs.com/en/4x/api.html[express]
. link:https://www.terlici.com/2015/04/03/mongodb-node-express.html[mongodb-express]
. link:https://www.rabbitmq.com/[rabbitmq]
. link:https://www.npmjs.com/package/servicebus[servicebus]
. link:https://github.com/mateodelnorte/servicebus-retry[servicebus-retry]
. link:https://github.com/mateodelnorte/servicebus-register-handlers[servicebus-register-handlers]
. link:https://github.com/mateodelnorte/servicebus-trace[servicebus-trace]
. link:http://nycnode.com/videos/matt-walters-how-to-cqrs-in-node-eventually-consistent-unidirectional-systems-with-microservices[how to cqrs in node talk]
. link:https://www.youtube.com/watch?v=X_VHWQa1k0k[Eventually Consistent Distributed Systems with Node.js for Finance]

docker links:

. https://docs.docker.com/get-started
. https://docs.docker.com/compose/compose-file/

----
ocker build -t friendlyname . # Create image using this directory's Dockerfile
docker run -p 4000:80 friendlyname # Run "friendlyname" mapping port 4000 to 80
docker run -d -p 4000:80 friendlyname # Same thing, but in detached mode
docker container ls # List all running containers
docker container ls -a # List all containers, even those not running
docker container stop # Gracefully stop the specified container
docker container kill # Force shutdown of the specified container
docker container rm # Remove specified container from this machine
docker container rm $(docker container ls -a -q) # Remove all containers
docker image ls -a # List all images on this machine
docker image rm # Remove specified image from this machine
docker image rm $(docker image ls -a -q) # Remove all images from this machine
docker login # Log in this CLI session using your Docker credentials
docker tag username/repository:tag # Tag for upload to registry
docker push username/repository:tag # Upload tagged image to registry
docker run username/repository:tag # Run image from a registry

docker stack ls # List stacks or apps
docker stack deploy -c # Run the specified Compose file
docker service ls # List running services associated with an app
docker service ps # List tasks associated with an app
docker inspect # Inspect task or container
docker container ls -q # List container IDs
docker stack rm # Tear down an application

docker-machine create --driver virtualbox myvm1 # Create a VM (Mac, Win7, Linux)
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1 # Win10
docker-machine env myvm1 # View basic information about your node
docker-machine ssh myvm1 "docker node ls" # List the nodes in your swarm
docker-machine ssh myvm1 "docker node inspect " # Inspect a node
docker-machine ssh myvm1 "docker swarm join-token -q worker" # View join token
docker-machine ssh myvm1 # Open an SSH session with the VM; type "exit" to end
docker-machine ssh myvm2 "docker swarm leave" # Make the worker leave the swarm
docker-machine ssh myvm1 "docker swarm leave -f" # Make master leave, kill swarm
docker-machine start myvm1 # Start a VM that is currently not running
docker-machine stop $(docker-machine ls -q) # Stop all running VMs
docker-machine rm $(docker-machine ls -q) # Delete all VMs and their disk images
docker-machine scp docker-compose.yml myvm1:~ # Copy file to node's home dir
docker-machine ssh myvm1 "docker stack deploy -c " # Deploy an app
----