thrift
namespace java com.example.thrift
service CalculatorService {
i32 add(1: i32 a, 2: i32 b),
i32 subtract(1: i32 a, 2: i32 b)
}
package com.example.service;
public class CalculatorServiceImpl implements CalculatorService {
@Override
public int add(int a, int b) {
return a + b;
}
@Override
public int subtract(int a, int b) {
return a - b;
}
}
package com.example.server;
import com.example.thrift.CalculatorService;
import com.example.service.CalculatorServiceImpl;
import com.twitter.finagle.Thrift;
import com.twitter.finagle.builder.ServerBuilder;
public class ThriftServer {
public static void main(String[] args) {
CalculatorService.Processor<CalculatorServiceImpl> processor = new CalculatorService.Processor<>(new CalculatorServiceImpl());
ServerBuilder.safeBuild(
Thrift.server().serveIface("localhost:9090", processor)
);
}
}
package com.example.client;
import com.example.thrift.CalculatorService;
import com.twitter.finagle.Thrift;
import com.twitter.util.Future;
public class ThriftClient {
public static void main(String[] args) {
CalculatorService.ServiceIface client = Thrift.client().newIface("localhost:9090", CalculatorService.ServiceIface.class);
Future<Integer> addResult = client.add(10, 5);
addResult.onSuccess(result -> {
System.out.println("Add Result: " + result);
});
Future<Integer> subtractResult = client.subtract(10, 5);
subtractResult.onSuccess(result -> {
System.out.println("Subtract Result: " + result);
});
}
}