thrift
namespace java com.example
service CalculatorService {
i32 add(1: i32 param1, 2: i32 param2)
}
bash
$ thrift --gen java CalculatorService.thrift
package com.example;
public class CalculatorServiceImpl implements CalculatorService.Iface {
@Override
public int add(int param1, int param2) {
return param1 + param2;
}
}
scala
import com.twitter.finagle.Thrift
import com.twitter.finagle.zookeeper.ZookeeperServerSetCluster
val serverSet = new ZookeeperServerSetCluster("localhost:2181", "/services/calculator")
val server = Thrift.serveIface("localhost:8080", new CalculatorServiceImpl)
serverSet.join(server)
package com.example;
import com.twitter.finagle.Thrift
import com.twitter.util.Future
val client = Thrift.client.newIface[CalculatorService.FutureIface]("localhost:8080")
val addResult: Future[Int] = client.add(2, 3)
addResult.onSuccess { result => println(s"Result: $result") }