func (c *Client) Produce(msg *protocol.DataPackage) error { head := msg.Head buf := protocol.GetBuffer() defer protocol.PutBuffer(buf) if err := msg.Package(buf); err != nil { return errors.As(err) } if head.Command == protocol.CLIENT_CMD_SEND_USER_MSG || head.Command == protocol.CLIENT_CMD_RECV_USER_MSG { if err := common.NsqPublish(common.MSG_SERVER_TOPIC, buf.Bytes()); err != nil { return errors.As(err) } syslog.Debug("gateway --> msg_server publish message:", head, msg.Tail) } else if head.Command == protocol.CLIENT_CMD_USER_LOGIN || head.Command == protocol.CLIENT_CMD_USER_REGISTER { if err := common.NsqPublish(common.USER_CENTER_TOPIC, buf.Bytes()); err != nil { return errors.As(err) } syslog.Debug("gateway --> user_center publish message:", head, msg.Tail) } return nil }