2021与蓝度共同重构项目,服务端
fix
zhanzhiqin
2022-08-24 7983ce4db5c7bfcda3f5b28efe79ef82b83c53fa
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java
@@ -14,6 +14,8 @@
import com.sandu.ximon.admin.manager.iot.rrpc.topic.IBaseTopic;
import com.sandu.ximon.admin.manager.iot.rrpc.topic.ICustomizeTopic;
import com.sandu.ximon.admin.manager.iot.rrpc.util.FrameUtils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import java.util.List;
@@ -23,6 +25,7 @@
 * @author chenjiantian
 * @date 2021/12/2 18:21
 */
@Slf4j
public abstract class BaseInvokeSyncService implements IInvoke, IBaseTopic, ICustomizeTopic {
    /**
@@ -169,25 +172,40 @@
        request.setIdentifier("rrpc");
        request.setArgs(JSON.toJSONString(param));
        //todo
        // 获得服务调用响应
        return getAcsResponse(request, 1);
    }
    /**
     * 获得服务调用响应
     *
     * @param request
     * @return
     */
    private InvokeThingServiceResponse.Data getAcsResponse(InvokeThingServiceRequest request, int time) {
        if (time <= 3) {
        InvokeThingServiceResponse response = null;
        try {
            response = getClient().getAcsResponse(request);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        if (response == null) {
            throw new BusinessException("调用rrpc失败");
                    log.error("调用rrpc失败,响应为空!");
                    Thread.sleep(100);
                    return getAcsResponse(request, time + 1);
        }
        if (!response.getSuccess()) {
            throw new BusinessException("调用rrpc失败," + response.getErrorMessage());
        }
                    log.error("调用rrpc失败," + response.getErrorMessage());
                    Thread.sleep(100);
                    return getAcsResponse(request, time + 1);
                } else {
        // 服务调用成功,仅代表发送服务指令的成功,不代表执行服务本身是否成功
        if (response.getSuccess()) {
            // 仅同步服务有result
            return response.getData();
        }
        return null;
            } catch (Exception e) {
                throw new BusinessException("错误信息:" + e.getMessage());
            }
        } else {
            throw new BusinessException("硬件请求失败,请检查硬件设备!");
        }
    }
}