实现RPC接口的demo记录

1.Thrift RPC 接口实现 Demo

java 复制代码
@Service
public class DemoServiceImpl implements DemoService.Iface {

    private static final Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);

    @Override
    public String sayHello(Context context, String msg) throws TException {
        logger.info("接收到 RPC 请求, msg: {}", msg);
        return "Hello " + msg;
    }
}

2.Thrift RPC 配置 Demo

java 复制代码
@Configuration
public class DemoThriftConfiguration {

    @Value("${rpc.server.port:9090}")
    private int port;

    /**
     * 定义 Thrift Server
     */
    @Bean
    public ServiceBuilder<DemoService.Iface> demoServer(DemoServiceImpl serviceImpl) {
        return ServiceBuilder.fromInstance(DemoService.Iface.class, port, serviceImpl);
    }


    /**
     * 定义 Thrift Client
     */
    @Bean
    public DemoService.Iface demoClient() {
        return ClientBuilder.create(DemoService.Iface.class, "excover")
                .withTimeout(2000, TimeUnit.MILLISECONDS)
                // 直连地址,仅用于本地测试;这里请求服务自己
                .withDirectHost(HostAndPort.fromParts("127.0.0.1", port))
                .buildStub();
    }
}
复制代码
3.Thrift RPC Client 调用 Demo
java 复制代码
@RestController
@RequestMapping("/rpc")
public class DemoThriftController {

    private static final Logger logger = LoggerFactory.getLogger(DemoThriftController.class);

    @Resource
    private DemoService.Iface demoClient;

    /**
     * curl http://127.0.0.1:8080/rpc/sayHello\?msg=demo
     */
    @GetMapping("/sayHello")
    public String sayHello(String msg) {
        try {
            return demoClient.sayHello(ContextHelper.getContext(), msg);
        } catch (TException e) {
            logger.error("RPC 请求失败: {}", e.getMessage(), e);
            return "error";
        }
    }
}
相关推荐
XR12345678827 分钟前
政府办公楼网络搭建方案对比:信锐、华为、华三选型指南
网络·华为
星恒讯工业路由器1 小时前
网络安全访问控制规则详解
网络·安全·智能路由器·访问控制·防火墙规则·工业网络安全
上海云盾-小余1 小时前
混合网络攻击深度解析:WAF 流量清洗落地完整方案
网络
xiaoxiangsiyan1 小时前
LNMP + Redis Sentinel 高可用架构部署手册(续)
运维·网络·数据库·redis·缓存·架构·sentinel
RD_daoyi3 小时前
Google核心算法不再通知!全年持续滚动更新
大数据·服务器·前端·网络·搜索引擎·.net
联众合科技3 小时前
AF 防火墙与传统防火墙核心差异及新型威胁防御实测
网络·安全
三言老师4 小时前
free查看内存与缓存状态实操
运维·服务器·网络·centos
奥莱维4 小时前
酒店客控系统多少钱_2026不同规模报价区间透明解析
大数据·网络
无锡耐特森4 小时前
通过CAN转Profinet网关与PLC的配合引领智慧物流的未来
运维·服务器·网络
羽翼安全4 小时前
严防屏幕泄密:企业防拍摄系统的技术原理与落地实践
网络·安全·电脑