Description
Nifty is an implementation of Thrift clients and servers on Netty.
It is also the implementation used by Swift.
Nifty alternatives and similar libraries
Based on the "Networking" category.
Alternatively, view Nifty alternatives based on common mentions on social networks and blogs.
-
Dubbo
The java implementation of Apache Dubbo. An RPC and microservice framework. -
Netty
Netty project - an event-driven asynchronous network application framework -
OkHttp
Square’s meticulous HTTP client for the JVM, Android, and GraalVM. -
Async Http Client
Asynchronous Http and WebSocket Client library for Java -
urnlib
Java library for representing, parsing and encoding URNs as in RFC2141 and RFC8141 (Maintained by @claussni)
InfluxDB - Power Real-Time Data Analytics at Scale
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Nifty or a related project?
Popular Comparisons
README
Project Status: 🚨 Unmaintained 🚨
This project is archived and no longer maintained. At the time of archiving,
open issues and pull requests were closed and tagged with 2018-05-archive
.
For pre-existing users who need an open source alternative, we recommend taking
a look at airlift/drift.
Nifty
Nifty is an implementation of Thrift clients and servers on Netty.
It is also the implementation used by Swift.
Examples
To create a basic Thrift server using Nifty, use the Thrift 0.9.0 code generator to generate Java stub code, write a Handler for your service interface, and pass it to Nifty like this:
public void startServer() {
// Create the handler
MyService.Iface serviceInterface = new MyServiceHandler();
// Create the processor
TProcessor processor = new MyService.Processor<>(serviceInterface);
// Build the server definition
ThriftServerDef serverDef = new ThriftServerDefBuilder().withProcessor(processor)
.build();
// Create the server transport
final NettyServerTransport server = new NettyServerTransport(serverDef,
new NettyServerConfigBuilder(),
new DefaultChannelGroup(),
new HashedWheelTimer());
// Create netty boss and executor thread pools
ExecutorService bossExecutor = Executors.newCachedThreadPool();
ExecutorService workerExecutor = Executors.newCachedThreadPool();
// Start the server
server.start(bossExecutor, workerExecutor);
// Arrange to stop the server at shutdown
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
try {
server.stop();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
});
}
Or the same thing using guice:
public void startGuiceServer() {
final NiftyBootstrap bootstrap = Guice.createInjector(
Stage.PRODUCTION,
new NiftyModule() {
@Override
protected void configureNifty() {
// Create the handler
MyService.Iface serviceInterface = new MyServiceHandler();
// Create the processor
TProcessor processor = new MyService.Processor<>(serviceInterface);
// Build the server definition
ThriftServerDef serverDef = new ThriftServerDefBuilder().withProcessor(processor)
.build();
// Bind the definition
bind().toInstance(serverDef);
}
}).getInstance(NiftyBootstrap.class);
// Start the server
bootstrap.start();
// Arrange to stop the server at shutdown
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
bootstrap.stop();
}
});
}