You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Cloud API的Composite API触发ConcurrentDataChangeException,求OOB重试方案

问题解答

核心结论

ClaimCenter OOB(开箱即用)的Cloud API没有内置针对ConcurrentDataChangeException的自动重试机制,官方文档也未提供相关配置项来开启该功能。

可行解决方案

1. 自定义Cloud API扩展实现重试逻辑

通过扩展ClaimCenter Cloud API的业务逻辑层或拦截器,捕获ConcurrentDataChangeException并实现自动重试:

  • 可以在对应的Resource类(比如处理服务请求创建的Resource)中重写方法,添加重试逻辑,推荐使用指数退避重试来避免频繁冲突。
  • 伪代码示例:
    public class CustomServiceRequestResource extends com.guidewire.cc.rest.api.claim.v1.ServiceRequestResource {
        private static final int MAX_RETRIES = 3;
        private static final long INITIAL_BACKOFF = 100; // 初始退避时间(毫秒)
    
        @Override
        public Response createServiceRequest(ServiceRequest request) {
            int retryAttempts = 0;
            while (retryAttempts < MAX_RETRIES) {
                try {
                    // 执行原有创建逻辑
                    return super.createServiceRequest(request);
                } catch (ConcurrentDataChangeException ex) {
                    retryAttempts++;
                    if (retryAttempts >= MAX_RETRIES) {
                        throw ex; // 超过重试次数,抛出原异常
                    }
                    // 指数退避等待
                    long backoffTime = INITIAL_BACKOFF * (long) Math.pow(2, retryAttempts - 1);
                    try {
                        Thread.sleep(backoffTime);
                    } catch (InterruptedException ie) {
                        Thread.currentThread().interrupt();
                        throw new RuntimeException("Retry interrupted", ie);
                    }
                }
            }
            return null;
        }
    }
    
  • 注意事项:确保重试的操作是幂等的,避免重复创建服务请求;控制重试次数和退避时间,防止给系统带来额外负载。

2. 优化Composite API请求结构

减少单次Composite请求中的并发冲突点:

  • 拆分Composite请求,将可能触发冲突的操作分开执行,避免同时修改同一Claim资源的多个属性。
  • 调整请求顺序,将依赖强的操作放在前面执行,比如先完成Claim的基础信息更新,再创建关联的服务请求。

3. 调用端重试优化(若无法修改Cloud API)

如果只能在调用端处理,采用以下策略降低冲突概率:

  • 使用指数退避重试,不要立即重试,每次重试的等待时间逐步翻倍。
  • 添加幂等标识:如果Cloud API支持(部分版本的ClaimCenter Cloud API支持Idempotency-Key请求头),生成唯一的幂等键,确保重复请求不会产生重复的业务数据。

社区反馈

不少用户在ClaimCenter开发者社区反馈过同类问题,主流的解决方式是通过自定义扩展实现重试逻辑,或者调整Composite请求的结构来减少并发冲突。

内容的提问来源于stack exchange,提问作者Kiran Panga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:12:36