in example/outlier/hello_micro/client/client.go [43:81]
func main() {
c := initOutlierClient()
err := sentinel.InitDefault()
if err != nil {
log.Fatal(err)
}
_, err = outlier.LoadRules([]*outlier.Rule{
{
Rule: &circuitbreaker.Rule{
Resource: serviceName,
Strategy: circuitbreaker.ErrorCount,
RetryTimeoutMs: 3000,
MinRequestAmount: 1,
StatIntervalMs: 1000,
Threshold: 1.0,
},
EnableActiveRecovery: false,
MaxEjectionPercent: 1.0,
RecoveryIntervalMs: 2000,
MaxRecoveryAttempts: 5,
},
})
if err != nil {
log.Fatal(err)
}
passCount, testCount := 0, 200
req := c.NewRequest(serviceName, "Test.Ping", &proto.Request{},
client.WithContentType("application/json"))
for i := 0; i < testCount; i++ {
rsp := &proto.Response{}
err = c.Call(context.Background(), req, rsp)
log.Println(rsp, err)
if err == nil {
passCount++
}
time.Sleep(500 * time.Millisecond)
}
log.Printf("Results: %d out of %d requests were successful\n", passCount, testCount)
}