in example/outlier/hello_kratos/client/client.go [56:93]
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 := &pb.HelloRequest{Name: "Bob"}
for i := 0; i < testCount; i++ {
ctx := metadata.NewClientContext(context.Background(), metadata.New())
rsp, err := c.SayHello(ctx, req)
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)
}