请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

手写RPC调用的client的原因

老师,之前message-thrift-service的client端,是直接thrift自动生成的message-thrift-java-service-api得到client端,这里为了调用user-thrift-service, 为什么需要手写client而不像之前那样自动生成?毕竟这个edge service和user-thrift-service之间还是RPC调用,应该还是可以自动生成stub

正在回答 回答被采纳积分+3

1回答

刘果国 2020-03-20 10:06:59

你好,不是特别明白你的点,业务逻辑的代码肯定是要自己写的呀。生成的都是机械式的代码。

0 回复 有任何疑惑可以回复我~
  • 提问者 Lei_Hsia #1
    我之前没有说清楚... 其实就是想问,同样是edge service要调用的user-thrift-service和message-service, 为什么调用user-thrift-service需要手写client,但是调用message-service不需要
    回复 有任何疑惑可以回复我~ 2020-03-22 09:11:25
  • 刘果国 回复 提问者 Lei_Hsia #2
    你好,调用user-thrift-service和message-service都是差不多的写法呀:
    public UserService.Client getUserService() {
    
            return getService(serverIp, serverPort, ServiceType.USER);
        }
    
        public MessageService.Client getMessasgeService() {
    
            return getService(messageServerIp, messageServerPort, ServiceType.MESSAGE);
        }
    
        public <T> T getService(String ip, int port, ServiceType serviceType) {
            TSocket socket = new TSocket(ip, port, 3000);
            TTransport transport = new TFramedTransport(socket);
            try {
                transport.open();
            } catch (TTransportException e) {
                e.printStackTrace();
                return null;
            }
            TProtocol protocol = new TBinaryProtocol(transport);
    
            TServiceClient result = null;
            switch (serviceType) {
                case USER:
                    result = new UserService.Client(protocol);
                    break;
                case MESSAGE:
                    result = new MessageService.Client(protocol);
                    break;
            }
            return (T)result;
        }
    回复 有任何疑惑可以回复我~ 2020-03-23 08:01:38
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号