TChannel
Below we document the interface of tchannel itself; This includes
makeSubChannel
request().send()
register()
listen()
Stability: stable
var channel = TChannel(options)
To create a channel
you call TChannel
with some options.
var TChannel = require('tchannel');
var channel = TChannel();
channel.listen(8080, '127.0.0.1');
options.statTags
You must specify tag information for the stats support. The following four fields are available:
- required:
options.statTags.app
name of your app options.statTags.host
the hostname of the serveroptions.statTags.cluster
the name of the clusteroptions.statTags.version
the version of your application
options.statsd
You can pass a statsd
instance into TChannel. If you pass a
statsd
client in we will hook up the 'stat'
event to the
statsd client.
Check out the stats document to see what stats we will emit
We recommend using uber-statsd-client
options.logger
You can pass in your own logger instance. This will default to a null logger that prints no information.
The logger you pass in must implement debug
, info
, warn
,
error
and fatal
methods.
We recommend using logtron
options.requestDefaults
You can specify default values for all outgoing requests on a per channel basis.
You can pass an object; for example
var channel = TChannel({
requestDefaults: {
hasNoParent: true,
headers: {
'as': 'raw',
'cn': 'testy-test'
}
}
})
options.trace
There is a trace
boolean that can be used to turn tracing off
by setting it to false
. Tracing defaults to true.
It's recommend you run with tracing permanently on.
options.traceReporter
If you want to implement a custom reporter for tracing information
then you can specifiy a traceReporter
function.
By default this is not needed; the hyperbahn client comes with a tcollector reporter that will be wired up for you.
channel.listen(port, host, callback?)
Starts listening on the given port and host.
Both port and host are mandatory.
The port may be 0, indicating that the operating system must grant an available ephemeral port.
The eventual host and port combination must uniquely identify the TChannel server and it is strongly recommended that the host be the public IP address.
channel.hostPort
Once you've called listen the channel will have a hostPort
that
you can access in the case you called listen(0)
.
channel.close(cb)
When you want to close your channel you call .close()
. This
will cleanup the tcp server and any tcp sockets as well
as cleanup any inflight operations.
Your cb
will get called when it's finished.
channel.TChannelAsThrift
The channel exposes the TChannelAsThrift
implementation. This
means you only have to import tchannel and can use the thrift
implementation from the channel
instance
channel.TChannelAsJSON
The channel exposes the TChannelAsJSON
implementation. This
means you only have to import tchannel and can use the json
implementation from the channel
instance