ric-utils-rpc2
Install
npm i --save ric-utils-rpc2
npm shrinkwrap
Usage
Инициализация контроллера
const Rpc = require('ric-utils-rpc2');
const amqp = require('ric-amqp');
const rabbitmq = amqp.createConnection();
const rabbit = app.interfaces.transport.rabbitmq;
const config = {
title: 'some-service',
instanceId: 'unikalInstanceId'
};
const rpc = new Rpc(rabbit, config);
rpc.setInstanceId('someInstanceId');
Client
Инициализация клиента
const hostService = 'some-sercive';
const client = rpc.getClient(hostService);
client.setInstanceId('someInstanceId');
client.setHeaders();
client.addHeaders('headerKey', 'headerValue')
client.addHeaders({ headerKey1: 'headerValue2', ... })
client.removeHeaders('headerKey1', 'headerKey2', ...)
client.removeHeaders(['headerKey1', 'headerKey2', ...])
client.removeHeaders({ headerKey1: 'headerValue1', ... })
Вызов удаленной функции
const method = 'some-method';
const params = { arg1: 'test' };
const headers = { headerKey1: 'headerValue' };
const options = {
await: 30000
broadcast: true
};
client.call({ method, params, headers }, options (err, res) => { ... });
Использование proxy-клиента
Proxy-клиент позволяет вызывать методы удаленного сервера в упрощенном виде - при помощи camelCase
нотации, как будто это вызов локального метода клиента. При этом доступны все функции из примера выше и стандартный способ вызова удаленной функции.
const hostService = 'some-sercive';
const proxyClient = rpc.getProxyClient(hostService);
const params = { arg1: 'test' };
const headers = { headerKey1: 'headerValue' };
const options = {
await: 30000
broadcast: true
};
proxyClient.someMethod(params, headers, options, (err, result) => { ... });
Вызов удаленной функции из proxy-клиента не требует передачи всех аргументов. Ниже приведены ВСЕ допустимые комбинации аргументов:
proxyClient.someMethod(params, headers, options, callback);
proxyClient.someMethod(callabck);
proxyClient.someMethod(params, callback);
proxyClient.someMethod(params, headers, callback);
Все аргументы, используемые при создании вызова влияют только на один создаваемые в текущий момент вызов.
Server
Инициализация сервера
const hostService = 'some-sercive';
const instanceId = 'unicInstanceId';
const server = rpc.getServer(hostService);
server.setInstanceId('someInstanceId');
const binding = {
arguments: {
to: hostService,
toInstance: instanceId
}
};
server.bind(binding, err => { ... });
Добавление метода
server.addMethod('some-method', function () { ... });
Обработчики методов могут принимать от 1 до 3 аргументов. В случае, если функция явно не принимает аргументы или использует spread-конструкцию, количество аргументов принимается за 3.
Ниже приведены возможные варианты объявления обработчика:
server.addMethod('some-method1', function () { ... });
server.addMethod('some-method1', function (...args) { ... });
server.addMethod('some-method1', function (callback) { ... });
server.addMethod('some-method1', function (params, callback) { ... });
server.addMethod('some-method1', function (rpcCall, params, callback) { ... });
RpcCall