@scalecube/scalecube-microservice
TypeScript icon, indicating that this package has built-in type declarations

0.2.11 • Public • Published

Join the chat at https://gitter.im/scalecube-js/Lobby

This is part of scalecube-js project, see more at https://github.com/scalecube/scalecube-js
Full documentation

Microservices

This package provides Scalecube's implementation for microservices architecture.

documentation

please Read before starting to work with scalecube.

Usage

import { createMicroservice } from '@scalecube/scalecube-microservice';
import { TransportNodeJS } from '@scalecube/transport-nodejs';
import { joinCluster } from '@scalecube/cluster-nodejs';

const microserviceInstance = createMicroservice({
  services: [/* array of services */],
  seedAddress : 'pm://myOrganization:8080/ServiceA',
  address : 'pm://myOrganization:8080/ServiceB',
  transport: TransportNodeJS, // scalecube provide a default transport configuration when running on browser,
  cluster: joinCluster, // scalecube provide a default cluster configuration when running on browser,
  defaultRouter: retryRouter({period:10}),
  debug: true // default is false
})

Define a service

import { ASYNC_MODEL_TYPES } from '@scalecube/scalecube-microservice';

export const greetingServiceDefinition = {
  serviceName: 'GreetingService',
  methods: { 
    hello: {
      asyncModel: ASYNC_MODEL_TYPES.REQUEST_RESPONSE,
    }
  },
};

Create a service

import { createMicroservice } from '@scalecube/scalecube-microservice';
import { greetingServiceDefinition } from './definitions';

createMicroservice({
  services : [{
    definition: greetingServiceDefinition,
    reference: {
      hello : async (name) => `Hello ${name}`
    }, 
   }],
   address : 'seed'
});
example of working with dependencies
import { createMicroservice } from '@scalecube/scalecube-microservice';
import { greetingServiceDefinition } from './definitions';

createMicroservice({
  service : [{
    definition: greetingServiceDefinition,
    reference: ({ createProxy, createServiceCall }) => {
      // callback response with createProxy or createServiceCall
      // it is possible to inject the proxy/serviceCall to the service
      const proxy = createProxy({ serviceDefinition: remoteServiceDefinition});
      return new GreetingService(proxy);
    }
   }],
   address : 'seed'
});

Use the service

import { createMicroservice } from '@scalecube/scalecube-microservice';

const microservice = createMicroservice({
  address : 'ms1',
  seedAddress : 'seed'
});
example of creating and using a proxy
// createProxy will return a Proxy(service)
const proxyName = microservice.createProxy({
    serviceDefinition: remoteServiceDefinition
});

proxyName.hello('ME').then(console.log) // Hello ME

Readme

Keywords

none

Package Sidebar

Install

npm i @scalecube/scalecube-microservice

Weekly Downloads

12

Version

0.2.11

License

MIT

Unpacked Size

184 kB

Total Files

41

Last publish

Collaborators

  • ronen.nachmias
  • idanilt
  • scalecube-ci
  • skolomiiets
  • scalecube-js-user-developer
  • idokatz
  • viktor.pyshnenko