Microservice Utils
Contains rabbitmq-based transport for establishing a net of loosely coupled microservices with a simple rpc-style calling interface.
Install
npm i ms-amqp-transport -S
Heavily relies on dropbox/amqp-coffee
lib for establishing communication to rabbitmq.
Notice, Upgrade from 3.x to 4.x
- ms-validation became a peer dependency, >= 3.x.x
- node must be of version >= 6.2.0
- npm must be >= 3.x.x
Rest is exactly the same as before
Usage
const AMQPTransport = ; const amqp = config; amqp;
In a more generic case, you want to use .connect(config, messageHandler)
helper, which would create queues and bind them to exchanges for you
based on the provided configuration.
Consider the following example:
const AMQPTransport = ; // message routers { } AMQPTransport;
amqp.publish(route, message, [options])
Publishes message to a route on an exchange defined in configuration
route
- routikngKey, must be stringmessage
- anything that can be stringified, it's advised for it to be smalloptions
:options.timeout
- sets TTL on the message
amqp.publishAndWait(route, message, [options])
Same as previous one, but specifies a correlation id and replyTo header, therefore allowing one to receive a response.
route
- routikngKey, must be stringmessage
- anything that can be stringified, it's advised for it to be smalloptions
:options.timeout
- sets TTL on the message
amqp.send(queue, message, [options])
Sends message directly to a queue
queue
- queue name, must be stringmessage
- anything that can be stringified, it's advised for it to be smalloptions
:options.timeout
- sets TTL on the message
amqp.sendAndWait(queue, message, [options])
Sends message directly to a queue and sets replyTo and correlationId headers
queue
- queue name, must be stringmessage
- anything that can be stringified, it's advised for it to be smalloptions
:options.timeout
- sets TTL on the message
Tests
Run make test
in order to run tests in the dockerized infrastructure. Currently runs tests in 5.x.x, 4.x.x and 0.10.40.
Add more targets if you wish to.