/// <summary>
        /// DescribeTargetHealth 接口用来获取应用型负载均衡后端的健康检查结果。
        /// </summary>
        /// <param name="req">参考<see cref="DescribeTargetHealthRequest"/></param>
        /// <returns>参考<see cref="DescribeTargetHealthResponse"/>实例</returns>
        public async Task <DescribeTargetHealthResponse> DescribeTargetHealth(DescribeTargetHealthRequest req)
        {
            JsonResponseModel <DescribeTargetHealthResponse> rsp = null;

            try
            {
                var strResp = await this.InternalRequest(req, "DescribeTargetHealth");

                rsp = JsonConvert.DeserializeObject <JsonResponseModel <DescribeTargetHealthResponse> >(strResp);
            }
            catch (JsonSerializationException e)
            {
                throw new TencentCloudSDKException(e.Message);
            }
            return(rsp.Response);
        }
Пример #2
0
        public async Task <Response> Handle(SNSEvent snsRequest, CancellationToken cancellationToken = default)
        {
            var request = requestFactory.CreateFromSnsEvent(snsRequest);

            logger.LogInformation($"Received transformed request: {JsonSerializer.Serialize(request)}");

            var addresses           = dnsResolver.Resolve(request.TargetDnsName).AddressList ?? new IPAddress[] { };
            var targetHealthRequest = new DescribeTargetHealthRequest {
                TargetGroupArn = request.TargetGroupArn
            };
            var targetHealthResponse = await elbClient.DescribeTargetHealthAsync(targetHealthRequest);

            logger.LogInformation($"Got target health response: {JsonSerializer.Serialize(targetHealthResponse)}");

            var targetHealthDescriptions = targetHealthResponse.TargetHealthDescriptions;
            var healthyTargets           = from target in targetHealthDescriptions where target.TargetHealth.State != TargetHealthStateEnum.Unhealthy select target.Target;
            var unhealthyTargets         = from target in targetHealthDescriptions where target.TargetHealth.State == TargetHealthStateEnum.Unhealthy select target.Target;
            var newTargets = from address in addresses
                             where healthyTargets.All(target => !IPAddress.Parse(target.Id).Equals(address))
                             select new TargetDescription
            {
                Id = address.ToString(),
                AvailabilityZone = "all",
                Port             = 80
            };

            await Task.WhenAll(new Task[]
            {
                DeregisterTargets(request.TargetGroupArn, unhealthyTargets),
                RegisterTargets(request.TargetGroupArn, newTargets),
            });

            return(new Response
            {
                Success = true
            });
        }
Пример #3
0
 /// <summary>
 ///  查询后端服务下的target的健康状态
 /// </summary>
 /// <param name="request">请求参数信息</param>
 /// <returns>请求结果信息</returns>
 public async Task <DescribeTargetHealthResponse> DescribeTargetHealth(DescribeTargetHealthRequest request)
 {
     return(await new DescribeTargetHealthExecutor().Client(this).Execute <DescribeTargetHealthResponse, DescribeTargetHealthResult, DescribeTargetHealthRequest>(request).ConfigureAwait(false));
 }
Пример #4
0
 /// <summary>
 ///  查询后端服务下的target的健康状态
 /// </summary>
 /// <param name="request">请求参数信息</param>
 /// <returns>请求结果信息</returns>
 public DescribeTargetHealthResponse DescribeTargetHealth(DescribeTargetHealthRequest request)
 {
     return(new DescribeTargetHealthExecutor().Client(this).Execute <DescribeTargetHealthResponse, DescribeTargetHealthResult, DescribeTargetHealthRequest>(request));
 }