api/doc.go (1 lines of code) (raw):

// Copyright 1999-2020 Alibaba Group Holding Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Package api provides the topmost fundamental APIs for users using sentinel-golang. // Users must initialize Sentinel before loading Sentinel rules. Sentinel support three ways to perform initialization: // // 1. api.InitDefault(), using default config to initialize. // 2. api.InitWithConfig(confEntity *config.Entity), using customized config Entity to initialize. // 3. api.InitWithConfigFile(configPath string), using yaml file to initialize. // // Here is the example code to use Sentinel: // // import sentinel "github.com/alibaba/sentinel-golang/api" // // err := sentinel.InitDefault() // if err != nil { // log.Fatal(err) // } // // //Load sentinel rules // _, err = flow.LoadRules([]*flow.Rule{ // { // Resource: "some-test", // MetricType: flow.QPS, // Threshold: 10, // ControlBehavior: flow.Reject, // }, // }) // if err != nil { // log.Fatalf("Unexpected error: %+v", err) // return // } // ch := make(chan struct{}) // for i := 0; i < 10; i++ { // go func() { // for { // e, b := sentinel.Entry("some-test", sentinel.WithTrafficType(base.Inbound)) // if b != nil { // // Blocked. We could get the block reason from the BlockError. // time.Sleep(time.Duration(rand.Uint64()%10) * time.Millisecond) // } else { // // Passed, wrap the logic here. // fmt.Println(util.CurrentTimeMillis(), "passed") // time.Sleep(time.Duration(rand.Uint64()%10) * time.Millisecond) // // Be sure the entry is exited finally. // e.Exit() // } // } // }() // } // <-ch package api