Messaging communicator for NodeJs microservice
npm install sauromjs
API
Import package
const Saurom = require('sauromjs');
Request
Creating a request object
const request = new Saurom.Request({
instanceId: 'id1',
mqUrl: 'amqp://localhost',
timeout: 2000,
});
Connect to message queue
request.connect()
.then()
.catch();
Call a repository's service
request.call(repositoryName: string, serviceName: string, body: Object);
Example
const request = new Saurom.Request();
request
.connect()
.then(() => {
request
.call(
'MathRepository',
'sqrt',
{
number: 36,
}
)
.then((response) => {})
.catch((error) => {});
});
Service
Creating a service object
const service = new Saurom.Service({
repository: 'MathRepository',
instanceId: 'id2',
mqUrl: 'amqp://localhost',
});
Connect to message queue
service.connect()
.then()
.catch();
Define service
service.register(serviceName: string, function(req, res) {
});
Example
const service = new Saurom.Service({
repository: 'MathRepository',
});
service.register('sqrt', (req, res) => {
const { number } = req;
if (typeof number !== 'number') {
res.error(new Error('Not a number'));
return;
}
res.success(Math.sqrt(number));
});
service.connect();
Example
See more example at: https://github.com/nhuanhoangduc/sauromjs/tree/master/test
1. Request.js - Make request to UserRepository microservice
const Saurom = require('sauromjs');
const Request = new Saurom.Request();
Request.connect()
.then(async () => {
try {
const sqrt = await Request.call(
'MathRepository',
'sqrt',
{
number: 36,
}
);
const pow = await Request.call(
'MathRepository',
'pow',
{
baseNumber: 6,
exponent: 2
}
);
console.log(sqrt);
console.log(pow);
} catch (error) {
console.log(error);
}
})
.catch((err) => {
console.log(err);
});
2. MathRepository.js - Receive request message and send response message
const Saurom = require('sauromjs');
const Service = new Saurom.Service({
repository: 'MathRepository',
});
Service.register('sqrt', (req, res) => {
const { number } = req;
if (typeof number !== 'number') {
res.error(new Error('Not a number'));
return;
}
res.success(Math.sqrt(number));
});
Service.register('pow', (req, res) => {
const { baseNumber, exponent } = req;
if (typeof baseNumber !== 'number') {
res.error(new Error('Not a number'));
return;
}
res.success(Math.pow(baseNumber, exponent));
});
Service.connect()
.then(() => {
})
.catch((err) => {
console.log(err);
});