This is a Moleculer-based microservices project. Generated with the Moleculer CLI.
To start it:
- run
$npm i
- run
$docker-compose up
to up the whole stack needed - Get the name of the container for the service:
gophertown
- run
$docker exec -it CONTAINER_NAME moleculer connects nats://nats:4222
to connect to the REPL - Start the Kata
We want to create a small town: * A town object should have a name and a width/height definition * Create an action to handle the creation of the town on memory * Create an action to get a town data
Add gophers * Create an action to add a gopher to a town: a gopher have a name(hash/id) and a position (x,y) * Create an action to get list all gophers created
Add move a gopher to a town: * Create an action on the gophers to move them to a town (so the town need to follow the list of the living gophers) * Add the posibility to create the gopher directly inside a town
Add start using events: * Delete all action calls made from one service to an other service.
Start the project with npm run dev
command.
After starting, open the http://localhost:3000/ URL in your browser.
On the welcome page you can test the generated services via API Gateway and check the nodes & services.
In the terminal, try the following commands:
nodes
- List all connected nodes.actions
- List all registered service actions.call greeter.hello
- Call thegreeter.hello
action.call greeter.welcome --name John
- Call thegreeter.welcome
action with thename
parameter.call products.list
- List the products (call theproducts.list
action).
- api: API Gateway services
- greeter: Sample service with
hello
andwelcome
actions. - products: Sample DB service. To use with MongoDB, set
MONGO_URI
environment variables and install MongoDB adapter withnpm i moleculer-db-adapter-mongo
.
- db.mixin: Database access mixin for services. Based on moleculer-db
- Moleculer website: https://moleculer.services/
- Moleculer Documentation: https://moleculer.services/docs/0.14/
npm run dev
: Start development mode (load all services locally with hot-reload & REPL)npm run start
: Start production mode (setSERVICES
env variable to load certain services)npm run cli
: Start a CLI and connect to production. Don't forget to set production namespace with--ns
argument in scriptnpm run lint
: Run ESLintnpm run ci
: Run continuous test mode with watchingnpm test
: Run tests & generate coverage reportnpm run dc:up
: Start the stack with Docker Composenpm run dc:down
: Stop the stack with Docker Compose