To be able to make requests to a hyperbahn router it's recommended that you use the hyperbahn client.
The hyperbahn client makes it easy to make requests to any service that hyperbahn knows about and makes it easy to advertise your service with hyperbahn.
The hyperbahn client has a few important methods
hyperbahnClient.advertise();
hyperbahnClient.getClientChannel({ serviceName: '...' });
var hyperbahnSeedList = [...];
var HyperbahnClient = require('tchannel/hyperbahn/');
var hyperbahnClient = HyperbahnClient({
tchannel: tchannel,
serviceName: 'my-service',
hostPortList: hyperbahnSeedList,
logger: logger,
statsd: statsd,
hardFail: true
});
hyperbahnClient.advertise();
hyperbahnClient.once('advertised', onAdvertised);
function onAdvertised() {
/* hooray! */
}
The hyperbahnClient is used to advertise()
with the hyperbahn
router which will advertise your serviceName.
It's also used to get a subchannel when making out going requests through the hyperbahn router
The root channel that hyperbahnClient
will use to advertise
to hyperbahn with.
The serviceName
of your service. This is what you will advertise
to hyperbahn. Other services will use this serviceName
to make
calls to you.
The hostPortList
is the seed list for the hyperbahn network. For
you to be able to bootstrap onto the hyperbahn router you need
to know where hyperbahn is.
It's recommended that this is stored on disk in a JSON file on every host in your datacenter. You should read it off disk and pass it to the hyperbahn client so that it can reach the hyperbahn router.
A logger that hyperbahn client uses to log information about advertisements
A statsd client hyperbahn client uses to count information about advertisement.
Counters:
hyperbahn-client.{serviceName}.advertisement.success
hyperbahn-client.{serviceName}.advertisement.failure
If set; hyperbahn client advertisemnt will timeout.
This defaults to 5000 if hardFail
is true
and defaults to
Infinity
(no timeout) if hardFail
is false
.
The hyperbahnClient by default runs in a hybrid mode. This means
that hardFail
is set to false and it will advertise() forever.
This is recommended for services that are both a HTTP server and a tchannel server.
Any services that a pure tchannel server should set hardFail
to true. This means that if hyperbahnClient cannot advertise
after the advertisementTimeout
(default 5 seconds) it will
emit an error event.
Not being able to advertise with hyperbahn is a fatal exception.
You must call advertise()
to start the advertisement loop with
the hyperbahn router.
You can call getClientChannel()
to get the client sub channel
for a particular serviceName.
opts.serviceName
the serviceName of the sub channel
This sub channel is pre-configured with the correct peers list and callerName so you can make requests to it without configuring it.
This event gets emitted every time hyperbahn router confirms your advertisement. This means the hyperbahn router will start routing requests to you.
Hyperbahn client will advertise every minute with the hyperbahn routers. This event should get emitted every minute.
This event gets emitted if there's a failure with hyperbahn
advertisement. This only gets emitted if hardFail
is true
.