实现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";
        }
    }
}
相关推荐
线束线缆组件品替网1 小时前
IO Audio Technologies 音频线缆抗干扰与带宽设计要点
网络·人工智能·汽车·电脑·音视频·材料工程
布谷歌1 小时前
开发笔记:如何消除秘钥数据对RPC负荷、日志、系统安全的伤害?
网络·笔记·网络协议·rpc
咒法师无翅鱼1 小时前
【西电计网学习笔记】网络层【RIP,OSPF,ARP,ICMP,IGMP,逻辑寻址(ABCD四类)】
网络
Ares-Wang1 小时前
网络》》以太网交换安全
网络·安全
XiaoHu02071 小时前
Linux网络编程套接字
linux·服务器·网络·git
以太浮标2 小时前
华为eNSP模拟器综合实验之- VLAN聚合(VLAN Aggregation或Super VLAN)解析
运维·网络·华为·信息与通信
九成宫2 小时前
计算机网络期末复习——第4章:网络层 Part Three
网络·笔记·计算机网络·软件工程
23zhgjx-zgx3 小时前
SQL注入攻击分析报告
网络·sql·ctf
Xの哲學3 小时前
Linux SKB: 深入解析网络包的灵魂
linux·服务器·网络·算法·边缘计算
2502_911679144 小时前
精准与稳定的基石:Agilent 66311B,为移动通信测试量身定制的核心供电单元
大数据·网络·5g·信息与通信·信号处理