@brigade/pooled-thrift-client

2.0.0 • Public • Published

pooled-thrift-client

npm version Build Status

A node Thrift client utilising a pool of service connections and improved error handling/recovery

Features

  • proper Promise support in pool instance con/destruction
  • correct behaviour on "Internal Error", aka, socket misalignment on unhandled server errors
  • better/existent timeout support for: connections, pool checkout, execution
  • builtin retry support using upstream Thrift code
  • faster detection and pruning of dead connections
  • async/await compatibility and other niceties

Example usage

Given a thrift file calculator_service.thrift with contents:

exception OutOfRange {
  1: string message
}
service CalculatorService {
  i32 add(1:i32 num1, 2:i32 num2) throws (1:OutOfRange out_of_range)
}

Compile with the thrift command (installable via your package manager):

thrift --gen js:node calculator_service.thrift

This will produce JS definitions for your service, which can then be used to create a client:

const CalculatorService = require('./CalculatorService');
const thriftClient = require('pooled-thrift-client');

// host and port are mandatory see other config options in comments
const host = '127.0.0.1', port = 9000;
const client = thriftClient(CalculatorService, { host, port }, { poolOptions: { max: 5 } });

// use the client as you would a regular client, get pooling for free
client.add(1, 2).then(sum => console.log(sum));

Testing

Tests use the calculator_service.thrift example service located in spec/support/thrift. A compiled version is committed to this repository; to recompile it, install thrift using your package manager (e.g., brew install thrift), then follow the instructions in the file.

Tests can be run using

npm test

Dependencies (2)

Dev Dependencies (3)

Package Sidebar

Install

npm i @brigade/pooled-thrift-client

Weekly Downloads

1

Version

2.0.0

License

Apache-2.0

Unpacked Size

35.7 kB

Total Files

15

Last publish

Collaborators

  • anujdas
  • herbstmb
  • joinbrigade
  • parris
  • trotzig