Dubbo Triple
TripleResponse
TripleResponse<T> 泛型响应体,统一 Dubbo Triple RPC 返回格式
TripleResponse
TripleResponse<T> 是 Dubbo Triple RPC 的统一响应封装,采用泛型设计承载业务数据。所有 Triple 服务方法均应返回该类型,确保微服务间通信格式一致。
类定义
package com.xlf.utility.triple;
import lombok.experimental.SuperBuilder;
import java.io.Serializable;
// 泛型响应体,T 为业务数据类型
@SuperBuilder
public class TripleResponse<T> implements Serializable {
private String context;
private Boolean success;
private String code;
private String message;
private T data;
private Long duration;
private Long timestamp;
}字段说明
字段
类型
响应示例
成功响应
{
"context": "550e8400-e29b-41d4-a716-446655440000",
"success": true,
"code": "200",
"message": "查询成功",
"data": {
"userId": 10001,
"username": "xiao_lfeng",
"email": "test@example.com"
},
"duration": 23,
"timestamp": 1772620800000
}失败响应
{
"context": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"success": false,
"code": "40004",
"message": "参数无效: 用户 ID 不能为空",
"data": null,
"duration": 2,
"timestamp": 1772620800000
}异常响应
{
"context": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"success": false,
"code": "500",
"message": "系统异常: NullPointerException",
"data": null,
"duration": 156,
"timestamp": 1772620800000
}与 BaseResponse 的区别
| 维度 | BaseResponse<E> | TripleResponse<T> |
|---|---|---|
| 适用场景 | HTTP REST API | Dubbo Triple RPC |
| 状态码类型 | Integer(5 位数字码) | String(数字码字符串) |
| 序列化 | Jackson JSON | Dubbo 序列化(Protobuf / Hessian2) |
| 上下文来源 | MVC ContextHolder | Dubbo ContextHolder |
| 成功标志 | 依据 code 判断 | 显式 success 布尔值 |
构建方式
通常不直接构建 TripleResponse,而是通过 TripleResult 静态工厂方法创建:
// 推荐:使用 TripleResult 工厂方法
TripleResponse<UserDTO> response = TripleResult.success(userDTO, "查询成功");
// 直接 Builder 构建(不推荐,需手动填充上下文信息)
TripleResponse<UserDTO> response = TripleResponse.<UserDTO>builder()
.context(ContextHolder.getContextId())
.success(true)
.code("200")
.message("查询成功")
.data(userDTO)
.duration(ContextHolder.getDuration())
.timestamp(System.currentTimeMillis())
.build();