diff --git a/zrpc/client.go b/zrpc/client.go index fa12daafb..767ee28dc 100644 --- a/zrpc/client.go +++ b/zrpc/client.go @@ -21,6 +21,9 @@ var ( WithDialOption = internal.WithDialOption // WithNonBlock sets the dialing to be nonblock. WithNonBlock = internal.WithNonBlock + // WithBlock sets the dialing to be blocking. + // Deprecated: blocking dials are not recommended by gRPC. + WithBlock = internal.WithBlock // WithStreamClientInterceptor is an alias of internal.WithStreamClientInterceptor. WithStreamClientInterceptor = internal.WithStreamClientInterceptor // WithTimeout is an alias of internal.WithTimeout. @@ -61,6 +64,8 @@ func NewClient(c RpcClientConf, options ...ClientOption) (Client, error) { } if c.NonBlock { opts = append(opts, WithNonBlock()) + } else { + opts = append(opts, WithBlock()) } if c.Timeout > 0 { opts = append(opts, WithTimeout(time.Duration(c.Timeout)*time.Millisecond)) diff --git a/zrpc/config.go b/zrpc/config.go index 0ae62af2f..986541945 100644 --- a/zrpc/config.go +++ b/zrpc/config.go @@ -27,7 +27,7 @@ type ( Target string `json:",optional"` App string `json:",optional"` Token string `json:",optional"` - NonBlock bool `json:",optional"` + NonBlock bool `json:",default=true"` Timeout int64 `json:",default=2000"` KeepaliveTime time.Duration `json:",optional"` Middlewares ClientMiddlewaresConf diff --git a/zrpc/internal/client.go b/zrpc/internal/client.go index 8d05f7fed..d89faa8e2 100644 --- a/zrpc/internal/client.go +++ b/zrpc/internal/client.go @@ -141,6 +141,15 @@ func (c *client) dial(server string, opts ...ClientOption) error { return nil } +// WithBlock sets the dialing to be blocking. +// Deprecated: blocking dials are not recommended by gRPC. +// See https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md +func WithBlock() ClientOption { + return func(options *ClientOptions) { + options.NonBlock = false + } +} + // WithDialOption returns a func to customize a ClientOptions with given dial option. func WithDialOption(opt grpc.DialOption) ClientOption { return func(options *ClientOptions) { diff --git a/zrpc/internal/client_test.go b/zrpc/internal/client_test.go index 6c45e2f2e..65b5577af 100644 --- a/zrpc/internal/client_test.go +++ b/zrpc/internal/client_test.go @@ -34,6 +34,13 @@ func TestWithNonBlock(t *testing.T) { assert.True(t, options.NonBlock) } +func TestWithBlock(t *testing.T) { + var options ClientOptions + opt := WithBlock() + opt(&options) + assert.False(t, options.NonBlock) +} + func TestWithStreamClientInterceptor(t *testing.T) { var options ClientOptions opt := WithStreamClientInterceptor(func(ctx context.Context, desc *grpc.StreamDesc,