Skip to content

BCDPS 征信数据处理服务

一、系统概述

BCDPS 是微众银行风控生态中的征信数据中间件平台,作为统一的征信数据查询网关。接收来自上游贷款/信贷系统的征信查询请求,将请求分发至外部征信平台(CRIS)和模型平台(CMSS),处理响应结果,应用业务规则后返回给调用方。

属性
Group IDcn.webank.cnc.bcdps
Artifact IDbcdps
父 POMcn.webank.cnc.risksdk:brisk-sdk-parent:3.32.0-SNAPSHOT
Java 版本1.8
数据库MySQL (TDSQL) - bcdpsdb
消息中间件RMB(基于 Solace/WeMQ)
系统编号U635
SCMgit@code.weoa.com:cnc/bcdps.git

二、模块结构

2.1 bcdps-dao — 数据访问层

  • Artifact: cn.webank.cnc.bcdps:bcdps-dao
  • 职责: 所有 MyBatis DAO 接口、DTO/Entity 类、DDL 脚本、分库分表策略
  • 路径: bcdps/bcdps-dao/

2.2 bcdps-service — 业务逻辑层

  • Artifact: cn.webank.cnc.bcdps:bcdps-service(打包方式: jar)
  • 职责: RMB 消息监听、业务服务、处理器、定时任务、配置、文件处理、缓存
  • 路径: bcdps/bcdps-service/
  • 主类: cn.webank.cnc.bcdps.BcdpsApplication

三、包架构

3.1 bcdps-dao 包

职责
cn.webank.cnc.bcdps.daoMyBatis DAO 接口(25 个 DAO)
cn.webank.cnc.bcdps.dao.sharding分库分表策略(CommonShardStrategyResultIndexShardStrategy
cn.webank.cnc.bcdps.dtoEntity/DTO 类及 MyBatis Example 类
cn.webank.cnc.bcdps.enumsDAO 层枚举(LogKeyEnum

3.2 bcdps-service 包

职责
cn.webank.cnc.bcdps.configSpring 配置 Bean(缓存、调度、服务、线程池)
cn.webank.cnc.bcdps.constants常量定义(Common、Service、File、Mock、Task、DistributeTask)
cn.webank.cnc.bcdps.dto.credit征信领域 DTO(CreditQueryDto、BatchQueryDto、CreditResponseDto 等)
cn.webank.cnc.bcdps.dto.cmssCMSS 集成 DTO(CmssRequest、CmssDataSet、CmssBaseParam)
cn.webank.cnc.bcdps.dto.crisCRIS 集成 DTO(CrisCdpsRequest、CrisCdpsResponse)
cn.webank.cnc.bcdps.dto.gray灰度发布配置 DTO
cn.webank.cnc.bcdps.dto.mock测试 Mock 数据 DTO
cn.webank.cnc.bcdps.dto.threads线程池配置 DTO
cn.webank.cnc.bcdps.enums业务枚举(CdpsCode、RecordStatus、ReqType、RmbServiceTypeEnum 等)
cn.webank.cnc.bcdps.exception自定义异常(CdpsServiceException、ExpectedSuccException)
cn.webank.cnc.bcdps.facility缓存管理基础设施(AutowiredSimpleCacheManager、CacheManageFacility)
cn.webank.cnc.bcdps.service顶层 RMB 服务抽象(AbstractRmbService、AbstractResponseServiceOrEvent)
cn.webank.cnc.bcdps.service.biz可插拔征信类型处理框架的抽象基类
cn.webank.cnc.bcdps.service.biz.cmssCMSS(模型平台)具体实现
cn.webank.cnc.bcdps.service.biz.crisCRIS(征信平台)具体实现
cn.webank.cnc.bcdps.service.biz.com通用驱动流程实现
cn.webank.cnc.bcdps.service.cache配置缓存与刷新服务
cn.webank.cnc.bcdps.service.com通用工具(Facility、ServiceCodeConfig、StoreAndForward)
cn.webank.cnc.bcdps.service.credit核心征信业务编排服务(14 个服务类)
cn.webank.cnc.bcdps.service.daoService 层 DAO 包装(17 个 DaoService 类)
cn.webank.cnc.bcdps.service.file大文件读取与批处理
cn.webank.cnc.bcdps.service.handler请求/响应处理器(RMB 入口到业务的桥梁)
cn.webank.cnc.bcdps.service.handler.paramCheckHandler参数校验链(String、Integer、List、Map 类型校验)
cn.webank.cnc.bcdps.service.rmbRMB 消息监听实现(6 个服务)
cn.webank.cnc.bcdps.task定时任务入口
cn.webank.cnc.bcdps.task.handler定时任务处理器(批量查询、批量响应、兜底)
cn.webank.cnc.bcdps.threads异步处理 Runnable 线程类
cn.webank.cnc.bcdps.validation请求校验服务

四、核心类详解

4.1 应用入口

BcdpsApplication

  • 路径: bcdps/bcdps-service/src/main/java/cn/webank/cnc/bcdps/BcdpsApplication.java
  • 标准 Spring Boot 应用,注解:@SpringBootApplication@EnableAspectJAutoProxy@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)

4.2 RMB 消息监听器(service.rmb 包)

系统通过 6 个消息驱动的入口接收 RMB 消息:

类名RMB Service ID场景功能
AsyncSingleQueryService0631022801异步单笔征信查询
AsyncUnionQueryService0631022901异步联合查询(组合征信类型)
SyncSingleQueryService0630038601同步单笔查询(当前已禁用,@Service 已注释)
AsyncBatchQueryService0631023001异步批量征信查询(文件方式)
AsyncCreditResponseService0631023101异步征信响应回调
AsyncBatchCreditResponseService0631023301批量征信响应回调

AsyncSingleQueryService 详解:

  • 接收异步单笔征信查询请求
  • 解析消息,校验 serviceCode
  • 使用按征信类型配置的线程池
  • 委托给 CreditSingleAsyncQueryHandler 处理

AsyncCreditResponseService 详解:

  • 接收外部征信平台返回的响应
  • 按 service ID 或 service code 路由到对应的 AbstractResponseServiceOrEvent Bean
  • 回退到默认处理器 CRIS.RESP.COMMON

4.3 抽象基类(service 包根)

AbstractRmbService

  • 路径: bcdps-service/.../service/AbstractRmbService.java
  • 所有 RMB 监听器的基类
  • 核心方法:
    • analyMsg() — JSON 消息解析
    • dealRmb() — RMB 消息防重复(通过 TM_RMB_ANTI_REPEAT 表插入去重)
    • doProcess() — 模板方法:解析 → 防重 → 抽象 process()
    • getResponseService() — 响应路由:按 CRIS.RESP.<serviceId>.<scenario>CRIS.RESP.<serviceCode> 查找 Bean

AbstractResponseServiceOrEvent(实现 OnlineServiceOrEvent

  • 路径: bcdps-service/.../service/AbstractResponseServiceOrEvent.java
  • 征信响应处理的模板方法:
    • beforeProcess() — 校验 transRefNbr 存在
    • doProcess() — 构建 CreditResponseDto,调用 CreditComResponseService.process()
    • afterProcess() — 抽象方法,留给子类实现

4.4 请求处理器(service.handler 包)

CreditSingleAsyncQueryHandler@Service

  • 路径: bcdps-service/.../service/handler/CreditSingleAsyncQueryHandler.java
  • 编排完整的单笔异步查询流程:
    1. creditQueryService.validate() — 参数校验
    2. creditAuthConfigService.checkAuth() — 授权检查
    3. creditQueryService.createTmCase() — 创建 CASE 记录
    4. creditQueryService.buildQueryList() — 拆解为子查询(支持组合类型)
    5. creditQueryService.createQueryRec() — 为每个子查询创建 REC 记录
    6. comSingleAsyncQueryService.process() — 执行每个子查询

CreditBatchQueryHandler@Service

  • 路径: bcdps-service/.../service/handler/CreditBatchQueryHandler.java
  • 批量查询流程:校验 → 授权检查 → 提交到线程池 → CreditBatchQueryService.process()

CommonResponseHandler@Service("CRIS.RESP.COMMON")

  • 默认响应处理器,afterProcess() 为空操作

CmssResponseHandler@Service("CRIS.RESP.CMSS")

  • CMSS 响应处理器,校验 SEQ_NO 字段而非 transRefNbr

4.5 核心征信业务服务(service.credit 包)

CreditProcessFactory@Service

  • 路径: bcdps-service/.../service/credit/CreditProcessFactory.java
  • 可插拔征信类型处理的核心工厂/路由器
  • 通过 Spring 注入的 Map 按 Bean 命名规则定位处理器:
    • CDPS_SINGLE_<creditType>AbstractComCreditSingleAsyncQueryService
    • CDPS_RESPONSE_<creditType>AbstractComCreditResponseProcessService
    • CDPS_BATCH_<creditType>AbstractComCreditBatchQueryService
    • CDPS_DRIVE_<creditType>CDPS_DRIVE_COMAbstractComCreditDriveProcessService
  • 支持通过 TM_PARA_CREDIT_TYPE_INFO 中的 mappingCreditType 进行类型映射

CreditQueryService@Service

  • 路径: bcdps-service/.../service/credit/CreditQueryService.java
  • 核心查询准备服务:
    • validate() — 解析 ComCreditRequestDto,执行 requestCheckService.requestCheck(),校验征信类型
    • buildQueryList() — 将请求拆解为 List<CreditCommonQueryDto>(按征信集拆分)
    • createTmCase() — 创建 CASE 记录(含批量去重检查)
    • createQueryRec() — 创建查询 REC 记录
    • batchValidate() — 批量查询的参数校验

CreditComSingleAsyncQueryService@Service

  • 路径: bcdps-service/.../service/credit/CreditComSingleAsyncQueryService.java
  • 单笔异步查询编排:
    1. 通过工厂定位 AbstractComCreditSingleAsyncQueryService
    2. checkRequest() — 校验并解析请求
    3. resolveRequest() — 构建请求对象,设置 DB 字段
    4. startQuery() — 发送查询到外部系统
    5. 更新 REC 状态:INIT → SEND
    6. afterProcess() — 处理同步数据源响应

CreditComResponseService@Service

  • 路径: bcdps-service/.../service/credit/CreditComResponseService.java
  • 响应处理编排:
    1. cdpsSeqNo 查找状态为 SEND 的 REC
    2. 按 caseNo 查找 CASE
    3. 通过工厂路由到响应处理器
    4. validate() — 解析响应,提取结果码/消息/内容
    5. 更新 REC 状态:SEND → RESP
    6. 保存响应到 TM_CREDIT_RESP_INFO
    7. 失败时检查重试配置,可能重新入队
    8. 批量模式写入 TM_ASYNC_MSG_QUEUE;单笔模式走 syncProcess()

CreditProcessManagementService@Service

  • 路径: bcdps-service/.../service/credit/CreditProcessManagementService.java
  • 生命周期管理:
    • response() — 通过 RMB publish/sendRequest 回调上游
    • isAllReturn() — 检查 CASE 下所有子查询是否完成
    • imProperRspQuerier() — 异常返回(部分结果)
    • finalProcess() — 将所有 REC 和 CASE 移至历史表
    • exceptionResponse() — 异常回调

CreditRetryManagementService@Service

  • 路径: bcdps-service/.../service/credit/CreditRetryManagementService.java
  • 重试管理:
    • getRetryConfig() — 从 TM_PARA_CREDIT_RETRY 加载重试配置
    • getRetryRec() — 创建重试 REC(递减重试次数,延长过期时间)

CreditDriveProcessService@Service

  • 路径: bcdps-service/.../service/credit/CreditDriveProcessService.java
  • 驱动(级联)查询逻辑:
    • judgeNeedDriveProcess() — 根据 TM_PARA_DRIVE_CONFIG 判断是否需要二次查询
    • getDriveConfig() — 获取指定征信类型的驱动配置

CreditBatchQueryService@Service

  • 路径: bcdps-service/.../service/credit/CreditBatchQueryService.java
  • 批量查询执行:
    1. 从 FPS 下载文件
    2. 使用 BigFileReader(5 线程)逐行处理
    3. 每行由 BatchQuerySingleLineDealHandler 处理
    4. 流水记录到 TM_BATCH_QUERY_FLOW

CreditAuthConfigService@Service

  • 征信查询授权:验证 qrySysId 是否有权查询指定 creditTypereqType

CreditTypeInfoService@Service

  • 征信类型元数据管理,缓存在 ConfigCacheService

CreditQueryConfService@Service

  • TM_PARA_CREDIT_INFO 加载查询配置,提供每种征信类型的 RMB Service ID 和场景

CreditNotifyService@Service

  • 通过 RmbUtilAdaptor.publish() 向外部征信平台发送异步 RMB 消息

4.6 可插拔业务框架(service.biz 包)

抽象基类

AbstractComCreditSingleAsyncQueryService<T extends BaseRequest>

  • 路径: bcdps-service/.../service/biz/AbstractComCreditSingleAsyncQueryService.java
  • 发送查询到外部系统的模板:
    • checkRequest() — 抽象:校验/解析请求
    • resolveRequest() — 抽象:转换为 DB 对象
    • startQuery() — 抽象:发送到外部系统
    • buildComRequest() — 构建通用请求字段(Service ID、场景、DCN)
    • afterProcess() — 处理同步数据源响应

AbstractComCreditResponseProcessService<T, C>

  • 路径: bcdps-service/.../service/biz/AbstractComCreditResponseProcessService.java
  • 征信响应处理模板(最复杂的类):
    • syncProcess() — 主处理流水线:parse → calcVar → callEng → save → drive check → afterProcess
    • parseMessage() — 抽象:解析响应内容
    • calcVar() — 抽象:派生变量
    • callEng() — 可选执行风控策略/规则
    • save() — 抽象:持久化结果
    • failRspProcess() — 失败响应处理
    • driveProcess() — 发起级联查询
    • fillRespMap() — 组装最终响应

AbstractComCreditDriveProcessService

  • 路径: bcdps-service/.../service/biz/AbstractComCreditDriveProcessService.java
  • 驱动查询模板:
    • resolvePreResult() — 抽象:处理前置结果
    • buildDriveQueryDto() — 抽象:构建驱动查询 DTO
    • driveCheck() — 检查所有前置子查询是否达到终态

AbstractComCreditBatchQueryService

  • 批量查询处理模板

AbstractComCreditSingleSyncQueryService<T>

  • 同步数据源查询模板

CRIS 实现

Bean 名称功能
CrisSingleAsyncQueryServiceCDPS_SINGLE_CRIS构建 CRIS 请求(certNo、certType、certName、phone、transCode)
CrisResponseProcessServiceCDPS_RESPONSE_CRIS校验 CRIS 响应,解析 JSON/ARRAY 格式结果,GZip 解压,保存到 TM_CREDIT_JSON_RESULT
CrisBatchQueryServiceImplCDPS_BATCH_CRISCRIS 批量查询实现
CrisProcessService工具类CRIS 请求/响应 JSON 构建与解析

CMSS 实现

Bean 名称功能
CmssSingleAsyncQueryServiceCDPS_SINGLE_CMSS收集所有成功的子查询结果,GZip+Base64 编码为 CmssDataSet,发送到 CMSS
CmssResponseProcessServiceCDPS_RESPONSE_CMSS通过 CmssRspCodeEnum 映射 CMSS 响应码,保存到 TM_CMSS_JSON_RESULT
CmssProcessService工具类CMSS 请求构建和数据集组装

通用驱动实现

Bean 名称功能
ComCreditDriveProcessServiceCDPS_DRIVE_COM默认驱动实现,拆分 drivenCreditTypes 并创建子查询 DTO

4.7 基础设施类

Facility@Component

  • 路径: bcdps-service/.../service/com/Facility.java
  • 序列号生成:getCdpsSeqNo()getBizSeqNo()getSysSeqNo()getSeqNo(tableName)

RmbDaoService@Service

  • 路径: bcdps-service/.../service/dao/RmbDaoService.java
  • 防重复检查:isViolatedMsg() 插入 TM_RMB_ANTI_REPEAT;重复插入返回 false

ConfigRefreshService@Service

  • 路径: bcdps-service/.../service/cache/ConfigRefreshService.java
  • @PostConstruct 加载,之后每 5 分钟刷新:征信类型信息和授权配置到内存缓存

StoreAndForwardService@Service

  • 使用 SDK 的 TaskGroup 进行延迟重试的 Mock 响应投递

4.8 定时任务

AppScheduleTask@Component

  • 路径: bcdps-service/.../task/AppScheduleTask.java
  • 三个定时任务:
    1. creditBatchQueryTask() — 每 1 分钟,分布式锁,处理批量查询队列(TM_COM_CREDIT_QUERY_REC 中 INIT 状态的批量类型)
    2. creditBatchResponseTaskHandler() — 每 1 分钟,分布式锁,处理批量响应队列(TM_ASYNC_MSG_QUEUE
    3. fallBackTask() — Cron 0 0 1,22 * * ?(每天 1 点和 22 点),兜底/安全网处理

五、数据模型

5.1 数据库表(23 张表,数据库 bcdpsdb

#表名用途
1TM_PARA_CREDIT_TYPE_INFO征信类型注册表 — 定义每种征信来源(SINGLE/UNION)、异步标志、批量支持、压缩类型
2TM_CASE工单表 — 每笔征信查询请求一条记录。包含 bizSeqNo、creditType、客户信息、状态、回调信息、耗时等
3TM_CASE_HISTM_CASE 的历史表(相同 schema)
4TM_COM_CREDIT_QUERY_REC查询记录表 — 一个 CASE 中的每个子查询一条。跟踪状态生命周期:INIT→SEND→RESP→PROCESSING→PROCESSED
5TM_COM_CREDIT_QUERY_REC_HIS查询记录历史表
6TM_CREDIT_RESP_INFO响应内容表 — 存储征信平台返回的原始响应(mediumtext,压缩),按 cdpsSeqNo 关联
7TM_CREDIT_JSON_RESULTCRIS JSON 结果表 — CRIS 响应中解析出的 JSON 结果
8TM_BATCH_QUERY_FLOW批量查询流水表 — 跟踪批量文件处理(fileId、hashValues、validLineCount、costTime)
9TM_ASYNC_MSG_QUEUE异步消息队列 — 批量模式下,存放等待定时任务处理的响应记录
10TM_ASYNC_MSG_QUEUE_HIS异步消息队列历史表
11TM_CREDIT_AUTH_CONFIG授权配置表 — 复合键(creditType、qrySysId、reqType)控制哪些系统可查询哪些征信类型
12TM_PARA_CREDIT_INFO查询配置表 — 每种征信类型的 RMB Service ID(在线/批量查询和回调)、结果类型、结果表名
13TM_PARA_CREDIT_REQ输入参数配置 — 每种征信类型可配置的请求参数定义(key、type、length、required、default、target mapping)
14TM_PARA_CREDIT_RESULT输出参数配置 — 可配置的响应参数定义
15TM_PARA_DRIVE_CONFIG驱动配置 — 级联查询规则:哪些征信类型触发哪些二次查询
16TM_PARA_PROCESS_LINE_INFO处理线配置 — CMSS 处理线定义(processLineId、creditType、subCreditTypes)
17TM_CMSS_JSON_RESULTCMSS JSON 结果表 — CMSS 模型平台返回的解析结果
18TM_PARA_THREAD_POOL线程池配置表,按(serviceType、creditType)配置
19TM_MOCK_INFO测试 Mock 数据(按 ecifNo、creditType、sceneType)
20TM_PARA_CREDIT_RETRY重试配置 — 按(creditType、orgCreditType、qrySysId、productCd、sceneType):重试次数和重试间隔
21TM_TABLE_SEQ序列号生成表
22TM_RMB_ANTI_REPEATRMB 消息防重表
23TM_SCHEDULED_TASK_CONFIG定时任务调优参数(taskName、taskKey、loopSize、perSize)

5.2 关键 Entity/DTO 类

DAO 层 Entity(位于 bcdps-dao/src/main/java/cn/webank/cnc/bcdps/dto/):

  • TmCaseTmCaseHis — 工单及历史
  • TmComCreditQueryRecTmComCreditQueryRecHis — 查询记录及历史
  • TmCreditRespInfo — 响应内容
  • TmCreditJsonResult — CRIS JSON 结果
  • TmCmssJsonResult — CMSS JSON 结果
  • TmAsyncMsgQueueTmAsyncMsgQueueHis — 异步消息队列及历史
  • TmBatchQueryFlow — 批量查询流水
  • TmParaCreditInfo — 查询配置
  • TmParaCreditReq — 输入参数配置
  • TmCreditAuthConfig — 授权配置

Service 层 DTO(位于 bcdps-service/src/main/java/cn/webank/cnc/bcdps/dto/):

  • credit/ComCreditRequestDto — 通用请求 DTO(serviceCode、productCd、transRefNbr、custInfo、callbackInfo、creditSets)
  • credit/CreditQueryDto — 单笔查询请求 DTO
  • credit/CreditCommonQueryDto — 通用子查询 DTO(扩展自 CreditQueryDto,含 TmCase、TmComCreditQueryRec)
  • credit/BatchQueryDto — 批量查询请求 DTO
  • credit/CreditResponseDto — 征信响应 DTO
  • credit/ComCreditInfoDto — 扩展 DTO(含结果 Map)
  • credit/CustInfo — 客户信息(ecifNo、name、idNo、idType、phoneNo)
  • credit/CallbackInfo — 回调配置(callbackServiceId、callbackScenarioId、callbackDcn)
  • credit/CreditEntity — 征信集条目
  • credit/ComResponseDto — 响应信封(code、desc、transRefNbr、creditContentList)
  • credit/ComSingleResponseDto — 单数据源响应
  • cris/CrisCdpsRequest — CRIS 请求
  • cris/CrisCdpsResponse — CRIS 响应
  • cmss/CmssRequest — CMSS 请求(seqNo、serviceCode、dataSets、processLineId)
  • cmss/CmssDataSet — CMSS 数据集(sourceData 经 GZip+Base64 编码)

六、业务流程

6.1 单笔异步征信查询流程

上游系统 → RMB(06310228/01) → AsyncSingleQueryService
    → CreditSingleAsyncQueryHandler
        → CreditQueryService.validate()(参数校验)
        → CreditAuthConfigService.checkAuth()(授权检查)
        → CreditQueryService.createTmCase()(创建 CASE)
        → CreditQueryService.buildQueryList()(拆分子查询)
        → CreditQueryService.createQueryRec()(创建 REC)
        → CreditComSingleAsyncQueryService.process()
            → CreditProcessFactory 路由
            → CrisSingleAsyncQueryService / CmssSingleAsyncQueryService
                → checkRequest() → resolveRequest() → startQuery()
                    → CreditNotifyService.async()(RMB 发送到外部平台)
            → REC 状态: INIT → SEND

6.2 征信响应处理流程

外部征信平台 → RMB(06310231/01) → AsyncCreditResponseService
    → CommonResponseHandler / CmssResponseHandler
    → CreditComResponseService.process()
        → 查找 REC(状态 SEND)和 CASE
        → 路由到 CrisResponseProcessService / CmssResponseProcessService
        → validate()(解析响应码、内容)
        → REC 状态: SEND → RESP
        → 保存到 TM_CREDIT_RESP_INFO
        → 失败: 检查重试配置 → 可能重新入队
        → 成功: syncProcess()
            → parseMessage() → calcVar() → callEng() → save()
            → driveProcess()(级联查询检查)
            → afterProcess()(检查是否所有子查询完成)
                → 全部完成: 回调上游,移至历史表

6.3 批量查询流程

上游系统 → RMB(06310230/01) → AsyncBatchQueryService
    → CreditBatchQueryHandler
        → 校验参数、授权检查
        → CreditBatchQueryService.process()
            → 从 FPS 下载文件
            → BigFileReader(5 线程)逐行处理
            → 每行创建 CASE + REC
            → 流水记录到 TM_BATCH_QUERY_FLOW
            → 删除本地文件
    → 定时任务 creditBatchQueryTask(每分钟)
        → 扫描 INIT 状态的批量 REC
        → 按征信类型分组,限流控制
        → 发送到外部平台

6.4 重试流程

征信查询返回错误(S9999)
    → CreditRetryManagementService.getRetryConfig()
        → 从 TM_PARA_CREDIT_RETRY 加载重试配置
    → 重试次数 > 0:
        → REC 状态从 RESP 改回 SEND
        → 创建新重试 REC(递减重试次数,延长过期时间)
        → 等待定时任务重新处理

6.5 驱动(级联)查询流程

征信响应处理完成后 syncProcess()
    → 检查 TM_PARA_DRIVE_CONFIG
    → 满足驱动条件:
        → 从 TM_CREDIT_RESP_INFO 加载前置结果
        → resolvePreResult() 提取数据
        → driveCheck() 检查前置子查询是否终态
        → buildDriveQueryDto() 创建驱动查询 DTO
        → 创建新 REC 记录
        → 提交到 CreditComSingleAsyncQueryService.process()

6.6 CMSS 集成流程

组合征信类型需要 CMSS 模型平台:
    → CmssSingleAsyncQueryService 收集所有成功的子查询结果
    → GZip+Base64 编码为 CmssDataSet
    → 发送到 CMSS(带 processLineId)
CMSS 返回:
    → CmssResponseHandler 路由到 CmssResponseProcessService
    → CmssRspCodeEnum 映射响应码
    → 保存到 TM_CMSS_JSON_RESULT

七、RMB 消息处理汇总

方向Service ID场景处理类消息类型
入站0631022801AsyncSingleQueryService单笔异步征信查询请求
入站0631022901AsyncUnionQueryService联合异步征信查询请求
入站0631023001AsyncBatchQueryService批量文件征信查询请求
入站0630038601SyncSingleQueryService(已禁用)同步单笔查询
入站0631023101AsyncCreditResponseService异步征信响应回调
入站0631023301AsyncBatchCreditResponseService批量征信响应回调
出站按类型配置按类型配置CreditNotifyService征信查询发送到 CRIS/CMSS
出站CASE 记录中配置CASE 记录中配置CreditProcessManagementService.response()结果回调上游

所有入站服务使用 @RmbMap 注解,实现 MessageListener 接口。所有消息通过 TM_RMB_ANTI_REPEAT 表进行防重复保护。

八、线程池配置

线程池名称核心线程最大线程队列容量用途
taskExecutor31010定时/调度任务
fileTaskExecutor202010000文件处理
concurrentTaskExecutor64512200RiskSDK 并发处理
commonQueryTaskExecutor20504000通用查询处理
comAsyncSingleQueryExecutor201001024异步单笔查询
comAsyncUnionQueryExecutor20504000异步联合查询
comAsyncBatchQueryExecutor202010000异步批量查询
comAsyncCreditResponseExecutor201202000异步征信响应
comBatchCreditResponseExecutor2012010000批量征信响应
syncQueryRmbExecutor103010同步查询 RMB 处理
configRefreshScheduler3--配置刷新调度

九、配置与部署

9.1 关键配置文件

文件路径用途
bcdps-service.propertiesconf/bcdps-service/主应用配置:系统 ID(U635)、RMB 超时、FPS 路径、数据清理、流控、MASA
bcdps-service-env.propertiesconf/bcdps-service/环境配置:TDSQL 连接、FPS 客户端、主机 IP
rmb-client.propertiesconf/bcdps-service/RMB 客户端:Solace/WeMQ 连接、VPN、线程池(72 线程,最大 288)、队列 10

9.2 关键配置项

配置项说明
systemIdU635BCDPS 系统标识
rmb_timeout5000RMB 消息超时(毫秒)
cnc.sdk.rmb.unionRmbRepeatChktrueRMB 防重检查
flow.control.enabledtrue流控启用

十、外部系统集成

10.1 出站调用

系统集成方式用途
CRIS(征信信息系统)RMB 异步发布发送征信查询请求
CMSS(征信模型服务系统)RMB 异步发布发送组合征信数据进行模型评分
FPS(文件处理服务)FPS SDK 客户端上传/下载批量查询文件
GNS(全局命名服务)GNS APIRMB 目标的服务发现

10.2 入站调用

系统RMB Service用途
上游贷款/信贷系统06310228/01单笔征信查询请求
上游贷款/信贷系统06310229/01联合征信查询请求
上游贷款/信贷系统06310230/01批量征信查询请求
CRIS 平台06310231/01征信查询响应回调
CMSS 平台06310231/01模型评分响应回调
外部平台06310233/01批量征信响应回调

十一、架构设计亮点

  1. 可插拔征信类型处理: CreditProcessFactory 通过 Bean 命名规则路由,新增征信类型只需创建新的 Bean 实现
  2. CASE/REC 生命周期管理: 每笔查询创建 CASE(工单)+ 多个 REC(子查询记录),状态机:INIT → SEND → RESP → PROCESSING → PROCESSED
  3. 双处理模式: 单笔异步查询在 RMB 线程中处理;批量查询使用文件+定时任务消费模式
  4. 级联查询(Drive): 一次查询结果可触发二次查询,实现复杂的多源数据聚合
  5. 表驱动的重试和授权: 重试策略和查询权限均通过配置表管理,支持运营级变更无需发版
  6. 细粒度线程池: 9 个独立线程池,支持按(serviceType、creditType)DB 配置线程数

十二、服务层交互全景图

上游贷款系统
    │ RMB (06310228/01, 06310229/01, 06310230/01)

┌──────────────────────────────────┐
│   RMB 消息监听器 (service.rmb)    │
│   AsyncSingleQueryService        │
│   AsyncUnionQueryService         │
│   AsyncBatchQueryService         │
└──────────────┬───────────────────┘


┌──────────────────────────────────┐
│   请求处理器 (service.handler)    │
│   CreditSingleAsyncQueryHandler  │
│   CreditBatchQueryHandler        │
└──────────────┬───────────────────┘


┌──────────────────────────────────┐
│   核心征信服务 (service.credit)   │
│   CreditQueryService → 创建 CASE + REC
│   CreditComSingleAsyncQueryService
│       → CreditProcessFactory 路由
│   CreditNotifyService → RMB 发出
└──────────────┬───────────────────┘


┌──────────────────────────────────┐
│   可插拔框架 (service.biz)        │
│   CrisSingleAsyncQueryService    │  → CRIS 平台
│   CmssSingleAsyncQueryService    │  → CMSS 平台
└──────────────────────────────────┘
               │ 外部征信平台返回响应

┌──────────────────────────────────┐
│   响应处理器                      │
│   CommonResponseHandler          │
│   CmssResponseHandler            │
│   → CreditComResponseService     │
│       → CrisResponseProcessService / CmssResponseProcessService
│       → parse → calcVar → callEng → save → drive
└──────────────┬───────────────────┘


上游贷款系统(RMB 回调)