Alchemy Router
Alchemy Router is the gateway from HTTP to Alchemy Resources for the Alchemy Micro-services Framework. It can be used directly as an application or as a library to build and customise using express middleware and routes.
Router Application
To install the alchemy router run:
npm install -g alchemy-router
Then execute:
alchemy-router
You can configure the router with the environment variables:
AMQP_URI
default'amqp://localhost'
: the location of the (RabbitMQ) AMQP serverPORT
default8080
: the port to open the HTTP server onTIMEOUT
default5000
: the router will return a408
timeout response after waiting for the service.PATHS
default'{}'
: the JSON string that matches service queues directly with paths, e.g.PATHS='{"/hello" : 'service.hello'}'
will direct all calls that start with path/hello
to the queueservice.hello
.
Docker
This repository also comes with an example Docker container, which is published to the docker hub.
Build the Docker container with:
docker build -t alchemy-router:$VERSION .
Push the docker container with:
docker push alchemy-router:$VERSION
Router Library
To install the router as a library:
npm install alchemy-router
To start a router:
AlchemyRouter = require 'alchemy-router'router = routerstart
Middleware
Middleware can be used to extend the routers with custom functionality. Middleware are objects with a callback
that is an express middleware callback function, an optional start
and stop
functions that can control the life cycle of the middleware.
logging_middleware = : consolelog reqpath next # promise to start middleware : -> true # promise to stop middleware : -> true AlchemyRouter = require 'alchemy-router'router = routerstart middleware: logging_middleware
Additional Routes
Additional hard-coded routes can be added to the router, these can be useful for health-checks, logging, versioning ... Note: these routes will override any service routes.
= appget '/hello' ressend say: "hello" resend AlchemyRouter = require 'alchemy-router'router = routerstart additional_routes: hello_route
Documentation
This Alchemy-Router documentation is generated with docco from its annotated source code.
The Alchemy-Router package exports Router:
module.exports = require("./router")