package rabbitmqrpc import ( "encoding/json" "log" "strconv" "time" "git.tetele.net/tgo/crypter" "github.com/golang/protobuf/proto" ) func SendDelay(exchange, key string, data interface{}, delay int64, url ...string) (*MsgSend, error) { conn, err := rpc_server_conn(url...) if err != nil { return nil, err } defer conn.Close() arg_data, err := json.Marshal(data) if err != nil { log.Println("json marshal error:", err) } arg := DelayMsgBody{} arg.Exchange = exchange arg.Key = key arg.Data = string(arg_data) arg.Delay = delay data_json, err := json.Marshal(arg) if err != nil { return nil, err } now_int64 := time.Now().Unix() encryData := crypter.DesEn(string(data_json), DES_KEY) now := strconv.FormatInt(now_int64, 10) sign := Sign(encryData, now) req := &Request{proto.String(encryData), proto.String(now), proto.String(sign), nil} res := &Response{} err = conn.SendDelay(req, res) if err != nil { return nil, err } res_data, err := GetOrgData(res) var res_arr MsgSend err = json.Unmarshal([]byte(res_data), &res_arr) if err != nil { return nil, err } return &res_arr, nil }