package main import ( "github.com/streadway/amqp" "log" "net" "net/rpc" "net/rpc/jsonrpc" "os" "time" ) type MPMsg struct { } func (mpMsg *MPMsg) Handle(args *map[string]interface{}, reply *map[string]interface{}) error { *reply = map[string]interface{}{} return nil } func main() { lf, _ := os.OpenFile("/var/log/"+time.Now().Format("2006-01-02T15:04:05")+".log", os.O_APPEND|os.O_CREATE|os.O_RDWR, 0666) defer lf.Close() log.SetOutput(lf) mpMsg := new(MPMsg) rpc.Register(mpMsg) addr, _ := net.ResolveTCPAddr("tcp", ":135") ln, e := net.ListenTCP("tcp", addr) if e != nil { panic(e) } for { conn, e := ln.Accept() if e != nil { continue } go jsonrpc.ServeConn(conn) } }
// RPC calls. rpcClient, e := jsonrpc.Dial("tcp", "2d1c07f4-8d2d-11e5-bf81-54ee755d5aba:135") if e != nil { log.Println("Error dail rpc server:", e) http.Error(w, e.Error(), http.StatusInternalServerError) return } var reply map[string]interface{} e = rpcClient.Call("MPMsg.Handle", msg, &reply) if e != nil { log.Println("Error call rpc method:", e) http.Error(w, e.Error(), http.StatusInternalServerError) return }
有疑问加站长微信联系(非本文作者)