Ants is set of highly available microservices architecture based on Ant and Teleport framework.
go version ≥ 1.7
go get -u github.com/xiaoenai/ants/...
- server
package main
import (
"github.com/henrylee2cn/ant"
tp "github.com/henrylee2cn/teleport"
)
// Args args
type Args struct {
A int
B int `param:"<range:1:>"`
}
// P handler
type P struct {
tp.PullCtx
}
// Divide divide API
func (p *P) Divide(args *Args) (int, *tp.Rerror) {
return args.A / args.B, nil
}
func main() {
srv := ant.NewServer(ant.SrvConfig{
ListenAddress: ":9090",
})
srv.RoutePull(new(P))
srv.Listen()
}
- client
package main
import (
"github.com/henrylee2cn/ant"
)
func main() {
cli := ant.NewClient(
ant.CliConfig{},
ant.NewStaticLinker(":9090"),
)
defer cli.Close()
type Args struct {
A int
B int
}
var reply int
rerr := cli.Pull("/p/divide", &Args{
A: 10,
B: 2,
}, &reply).Rerror()
if rerr != nil {
ant.Fatalf("%v", rerr)
}
ant.Infof("10/2=%d", reply)
rerr = cli.Pull("/p/divide", &Args{
A: 10,
B: 0,
}, &reply).Rerror()
if rerr == nil {
ant.Fatalf("%v", rerr)
}
ant.Infof("test binding error: ok: %v", rerr)
Ants is under Apache v2 License. See the LICENSE file for the full license text