当前位置: 首页 > article >正文

实现RPC接口的demo记录

1.Thrift RPC 接口实现 Demo

@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

@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
@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";
        }
    }
}


http://www.kler.cn/a/374622.html

相关文章:

  • Springboot 整合 Java DL4J 实现文本分类系统
  • .net core中间件Polly
  • FrankenPHP实践
  • 【深度学习】实验 — 动手实现 GPT【三】:LLM架构、LayerNorm、GELU激活函数
  • 系统学习CFD,常见收敛问题、及如何与机器学习相结合
  • 从 TCP 友好性看传输优化
  • 从传感器到清洁力提升,灵途科技推动家电智能化发展
  • Linux的硬盘管理
  • AI人工智能电话机器人如何使用效果最好
  • Android里的协程( Coroutine)理解
  • 快速上手机器学习-朴素贝叶斯
  • .NET Core WebApi第7讲:项目的发布与部署
  • opencv训练识别狗的分类器数据集
  • 3D人体建模的前沿探索:细数主流模型与技术进展
  • haue数据库原理第一次实验
  • ES6面试题:(第三天)
  • vscode 安装教程
  • Python 变量在函数中的作用域
  • 富格林:拆穿欺诈套路平稳出金
  • 「C/C++」C++ 之 随机数生成
  • Android 利用责任链模式来实现 解析不同的json对象
  • 【C++】多态(万字详细总结)
  • STM32中独立看门狗(IWDG)与窗口看门狗(WWDG)设计及时间计算
  • 2024年大湾区杯粤港澳金融数学建模B题超详细解题代码+数据集分享+问题一代码分享
  • AI做怀旧视频,自媒体轻松涨粉变现1w+!
  • qt QCheckBox详解