func()

in mse-go-demo/multiframe/B/main.go [25:93]


func (s *server) BSayHello(ctx context.Context, in *b_api.BHelloRequest) (*b_api.BHelloReply, error) {
	fmt.Printf("[BSayHello] service c receive say hello request : %v\n", in)
	var cReply *c_api.CHelloReply
	reply := &b_api.BHelloReply{}
	// grpc方式调用
	if in.CallType == "grpc" {
		conn, err := grpc.DialInsecure(
			context.Background(),
			grpc.WithEndpoint(KratosServiceCGrpcEndpoint),
			grpc.WithMiddleware(
				recovery.Recovery(),
			),
			grpc.WithTimeout(time.Second*2),
		)
		defer func() {
			if conn != nil {
				conn.Close()
			}
		}()
		if err != nil {
			fmt.Printf("[BSayHello] grpc: new client err: %v\n", err)
			return nil, err
		}

		client := c_api.NewCGreeterClient(conn)
		cReply, err = client.CSayHello(ctx, &c_api.CHelloRequest{Name: in.GetName(), CallType: in.GetCallType()})
		if err != nil {
			fmt.Printf("[BSayHello] grpc: say hello to service c err: %v\n", err)
			return nil, err
		}
		fmt.Printf("[BSayHello] grpc: say hello to service c successfully, reply is %v\n", cReply)
	} else {
		httpConn, err := http.NewClient(
			context.Background(),
			http.WithEndpoint(KratosServiceCHttpEndpoint),
			http.WithTimeout(time.Second*2),
		)
		defer func() {
			if httpConn != nil {
				httpConn.Close()
			}
		}()
		if err != nil {
			fmt.Printf("[BSayHello] http: new client err: %v\n", err)
			return nil, err
		}

		httpClient := c_api.NewCGreeterHTTPClient(httpConn)
		cReply, err = httpClient.CSayHello(ctx, &c_api.CHelloRequest{Name: in.GetName(), CallType: in.GetCallType()})
		if err != nil {
			fmt.Printf("[BSayHello] http: say hello to service c err: %v\n", err)
			return nil, err
		}
		fmt.Printf("[BSayHello] http: say hello to service c successfully, reply is %v\n", cReply)
	}

	reply.Message = cReply.GetMessage()
	tag := os.Getenv("MSE_ALICLOUD_SERVICE_TAG")
	if tag == "" {
		tag = "base"
	}
	ip := os.Getenv("KUBERNETES_POD_IP")
	callType := "http"
	if in.CallType == "grpc" {
		callType = "grpc"
	}
	reply.CallChain = fmt.Sprintf("B:%s:%s", tag, ip) + fmt.Sprintf(" -(%s)- ", callType) + cReply.GetCallChain()
	return reply, nil
}