func NewRetryContainerWithCB(cc *circuitbreak.Control, cp circuitbreaker.Panel) *Container {
	return &Container{
		cbContainer: &cbContainer{cbCtl: cc, cbPanel: cp}, retryerMap: sync.Map{},
		logger: klog.DefaultLogger(),
	}
}
NewRetryContainerWithCB build Container that doesn't do circuit breaker statistic but get statistic result.
Which is used in case that circuit breaker is enable.
eg:
cbs := circuitbreak.NewCBSuite(circuitbreak.RPCInfo2Key)
retryC := retry.NewRetryContainerWithCB(cbs.ServiceControl(), cbs.ServicePanel())
var opts []client.Option
opts = append(opts, client.WithRetryContainer(retryC))
// enable service circuit breaker
opts = append(opts, client.WithMiddleware(cbs.ServiceCBMW()))
package retry
import (
	"context"
	"fmt"
	"sync"
	"sync/atomic"
	"time"
	"github.com/bytedance/gopkg/cloud/circuitbreaker"
	"github.com/cloudwego/kitex/pkg/circuitbreak"
	"github.com/cloudwego/kitex/pkg/klog"
	"github.com/cloudwego/kitex/pkg/rpcinfo"
)
type RPCCallFunc func(context.Context, Retryer) (rpcinfo.RPCInfo, error)
type Retryer interface {
	AllowRetry(ctx context.Context) (msg string, ok bool)
	ShouldRetry(ctx context.Context, err error, callTimes int, request interface{}, cbKey string) (msg string, ok bool)
	UpdatePolicy(policy Policy) error
	Do(ctx context.Context, rpcCall RPCCallFunc, firstRI rpcinfo.RPCInfo, request interface{}) (recycleRI bool, err error)
	AppendErrMsgIfNeeded(err error, msg string)
	Prepare(ctx context.Context, prevRI, retryRI rpcinfo.RPCInfo)
	Dump() map[string]interface{}
	Type() Type
}