第一个SOFARPC工程

第一个SOFARPC工程

开发工具:IDEA

工程构建:mave

JDK:1.8

首先我们来创建一个maven工程

第二步 配置 pom.xml文件 添加以下包。

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.25</version>
        </dependency>

        <dependency>
            <groupId>com.alipay.sofa</groupId>
            <artifactId>sofa-rpc-all</artifactId>
            <version>5.4.5</version>
        </dependency>
    </dependencies>

第三步 创建服务

先定义接口 HelloService.java

public interface HelloService {
    /**
     * Just say hello
     *
     * @param name Name
     * @return response
     */
    public String sayHello(String name);
}

再实现接口 HelloServiceImpl.java

public class HelloServiceImpl implements HelloService{

    @Override
    public String sayHello(String name) {
        System.out.println("Server receive: " + name);
        return "hello " + name + " !";
    }

}

第四步 创建服务端主程序

QuickStartServer.java

public class QuickStartServer {
    private static Logger logger = LoggerFactory.getLogger(QuickStartServer.class);
    public static void main(String[] args) {
        ServerConfig serverConfig = new ServerConfig()
                .setProtocol("bolt") // 设置一个协议,默认bolt
                .setPort(8081) // 设置一个端口,默认12200
                .setDaemon(false); // 非守护线程

        ProviderConfig<HelloService> providerConfig = new ProviderConfig<HelloService>()
                .setInterfaceId(HelloService.class.getName()) // 指定接口
                .setRef(new HelloServiceImpl()) // 指定实现
                .setServer(serverConfig); // 指定服务端

        providerConfig.export(); // 发布服务
    }
}

第五步创建 客户端调用程序

QuickStartClient.java

public class QuickStartClient {
    private static Logger logger = LoggerFactory.getLogger(QuickStartClient.class);
    public static void main(String[] args) {
        ConsumerConfig<HelloService> consumerConfig = new ConsumerConfig<HelloService>()
                .setInterfaceId(HelloService.class.getName()) // 指定接口
                .setProtocol("bolt") // 指定协议
                .setDirectUrl("bolt://127.0.0.1:8081"); // 指定直连地址
        // 生成代理类
        HelloService helloService = consumerConfig.refer();
        while (true) {
            System.out.println(helloService.sayHello("world"));
            try {
                Thread.sleep(2000);
            } catch (Exception e) {
            }
        }
    }
}

第六步 maven 编译创建   clean install

第七步就可以启动你的服务啦

先启动 QuickStartServer   再启动 QuickStartClient

如果看到以下日志你就成功了。

 

服务日志
"C:\Program Files\Java\jdk1.8.0_25\bin\java" -Didea.launcher.port=7547 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2016.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_25\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;E:\java\sofa\sofa-rpc-5.4.5\SofaRpcDemo\target\classes;C:\Users\tanglei\.m2\repository\org\slf4j\slf4j-simple\1.7.25\slf4j-simple-1.7.25.jar;C:\Users\tanglei\.m2\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\sofa-rpc-all\5.4.5\sofa-rpc-all-5.4.5.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\bolt\1.4.2\bolt-1.4.2.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\common\sofa-common-tools\1.0.12\sofa-common-tools-1.0.12.jar;C:\Users\tanglei\.m2\repository\org\javassist\javassist\3.20.0-GA\javassist-3.20.0-GA.jar;C:\Users\tanglei\.m2\repository\io\netty\netty-all\4.1.25.Final\netty-all-4.1.25.Final.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\hessian\3.3.2\hessian-3.3.2.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\tracer-core\2.1.1\tracer-core-2.1.1.jar;C:\Users\tanglei\.m2\repository\io\opentracing\opentracing-api\0.22.0\opentracing-api-0.22.0.jar;C:\Users\tanglei\.m2\repository\io\opentracing\opentracing-noop\0.22.0\opentracing-noop-0.22.0.jar;C:\Users\tanglei\.m2\repository\io\opentracing\opentracing-mock\0.22.0\opentracing-mock-0.22.0.jar;C:\Users\tanglei\.m2\repository\io\opentracing\opentracing-util\0.22.0\opentracing-util-0.22.0.jar;C:\Users\tanglei\.m2\repository\org\jboss\resteasy\resteasy-netty4\3.0.12.Final\resteasy-netty4-3.0.12.Final.jar;C:\Users\tanglei\.m2\repository\org\jboss\resteasy\resteasy-jaxrs\3.0.12.Final\resteasy-jaxrs-3.0.12.Final.jar;C:\Users\tanglei\.m2\repository\org\jboss\resteasy\jaxrs-api\3.0.12.Final\jaxrs-api-3.0.12.Final.jar;C:\Users\tanglei\.m2\repository\org\jboss\spec\javax\annotation\jboss-annotations-api_1.1_spec\1.0.1.Final\jboss-annotations-api_1.1_spec-1.0.1.Final.jar;C:\Users\tanglei\.m2\repository\javax\activation\activation\1.1.1\activation-1.1.1.jar;C:\Users\tanglei\.m2\repository\org\apache\httpcomponents\httpclient\4.3.6\httpclient-4.3.6.jar;C:\Users\tanglei\.m2\repository\org\apache\httpcomponents\httpcore\4.3.3\httpcore-4.3.3.jar;C:\Users\tanglei\.m2\repository\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar;C:\Users\tanglei\.m2\repository\commons-codec\commons-codec\1.6\commons-codec-1.6.jar;C:\Users\tanglei\.m2\repository\commons-io\commons-io\2.1\commons-io-2.1.jar;C:\Users\tanglei\.m2\repository\net\jcip\jcip-annotations\1.0\jcip-annotations-1.0.jar;C:\Users\tanglei\.m2\repository\org\jboss\resteasy\resteasy-client\3.0.12.Final\resteasy-client-3.0.12.Final.jar;C:\Users\tanglei\.m2\repository\org\jboss\resteasy\resteasy-jackson-provider\3.0.12.Final\resteasy-jackson-provider-3.0.12.Final.jar;C:\Users\tanglei\.m2\repository\org\codehaus\jackson\jackson-core-asl\1.9.12\jackson-core-asl-1.9.12.jar;C:\Users\tanglei\.m2\repository\org\codehaus\jackson\jackson-mapper-asl\1.9.12\jackson-mapper-asl-1.9.12.jar;C:\Users\tanglei\.m2\repository\org\codehaus\jackson\jackson-jaxrs\1.9.12\jackson-jaxrs-1.9.12.jar;C:\Users\tanglei\.m2\repository\org\codehaus\jackson\jackson-xc\1.9.12\jackson-xc-1.9.12.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\lookout\lookout-api\1.4.1\lookout-api-1.4.1.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2016.1.3\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain QuickStartServer
[main] WARN com.alipay.sofa.common.log - Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
[main] INFO com.alipay.sofa.common.log - Welcome! Loading SOFA RPC Framework : 5.4.5_20180829115038, PID is:24400
[main] INFO com.alipay.sofa.common.log - Install Module: fault-tolerance
[main] INFO com.alipay.sofa.common.log - Install Module: sofaTracer-resteasy
[main] INFO com.alipay.sofa.common.log - The module lookout does not need to be loaded.
[main] INFO com.alipay.sofa.common.log - Install Module: sofaTracer
[main] INFO com.alipay.sofa.common.log - Export provider config : HelloService::bolt with bean id rpc-cfg-0
[main] WARN com.alipay.sofa.common.log - Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
[main] WARN com.alipay.sofa.common.log - Initialize the server.
[main] WARN com.alipay.sofa.common.log - [server side] bolt netty low water mark is 32768 bytes, high water mark is 65536 bytes
[main] WARN com.alipay.sofa.common.log - Server started on 0.0.0.0:8081
[main] INFO com.alipay.sofa.common.log - Bolt server has been bind to 0.0.0.0:8081
客户端日志
"C:\Program Files\Java\jdk1.8.0_25\bin\java" -Didea.launcher.port=7549 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2016.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_25\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;E:\java\sofa\sofa-rpc-5.4.5\SofaRpcDemo\target\classes;C:\Users\tanglei\.m2\repository\org\slf4j\slf4j-simple\1.7.25\slf4j-simple-1.7.25.jar;C:\Users\tanglei\.m2\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\sofa-rpc-all\5.4.5\sofa-rpc-all-5.4.5.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\bolt\1.4.2\bolt-1.4.2.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\common\sofa-common-tools\1.0.12\sofa-common-tools-1.0.12.jar;C:\Users\tanglei\.m2\repository\org\javassist\javassist\3.20.0-GA\javassist-3.20.0-GA.jar;C:\Users\tanglei\.m2\repository\io\netty\netty-all\4.1.25.Final\netty-all-4.1.25.Final.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\hessian\3.3.2\hessian-3.3.2.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\tracer-core\2.1.1\tracer-core-2.1.1.jar;C:\Users\tanglei\.m2\repository\io\opentracing\opentracing-api\0.22.0\opentracing-api-0.22.0.jar;C:\Users\tanglei\.m2\repository\io\opentracing\opentracing-noop\0.22.0\opentracing-noop-0.22.0.jar;C:\Users\tanglei\.m2\repository\io\opentracing\opentracing-mock\0.22.0\opentracing-mock-0.22.0.jar;C:\Users\tanglei\.m2\repository\io\opentracing\opentracing-util\0.22.0\opentracing-util-0.22.0.jar;C:\Users\tanglei\.m2\repository\org\jboss\resteasy\resteasy-netty4\3.0.12.Final\resteasy-netty4-3.0.12.Final.jar;C:\Users\tanglei\.m2\repository\org\jboss\resteasy\resteasy-jaxrs\3.0.12.Final\resteasy-jaxrs-3.0.12.Final.jar;C:\Users\tanglei\.m2\repository\org\jboss\resteasy\jaxrs-api\3.0.12.Final\jaxrs-api-3.0.12.Final.jar;C:\Users\tanglei\.m2\repository\org\jboss\spec\javax\annotation\jboss-annotations-api_1.1_spec\1.0.1.Final\jboss-annotations-api_1.1_spec-1.0.1.Final.jar;C:\Users\tanglei\.m2\repository\javax\activation\activation\1.1.1\activation-1.1.1.jar;C:\Users\tanglei\.m2\repository\org\apache\httpcomponents\httpclient\4.3.6\httpclient-4.3.6.jar;C:\Users\tanglei\.m2\repository\org\apache\httpcomponents\httpcore\4.3.3\httpcore-4.3.3.jar;C:\Users\tanglei\.m2\repository\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar;C:\Users\tanglei\.m2\repository\commons-codec\commons-codec\1.6\commons-codec-1.6.jar;C:\Users\tanglei\.m2\repository\commons-io\commons-io\2.1\commons-io-2.1.jar;C:\Users\tanglei\.m2\repository\net\jcip\jcip-annotations\1.0\jcip-annotations-1.0.jar;C:\Users\tanglei\.m2\repository\org\jboss\resteasy\resteasy-client\3.0.12.Final\resteasy-client-3.0.12.Final.jar;C:\Users\tanglei\.m2\repository\org\jboss\resteasy\resteasy-jackson-provider\3.0.12.Final\resteasy-jackson-provider-3.0.12.Final.jar;C:\Users\tanglei\.m2\repository\org\codehaus\jackson\jackson-core-asl\1.9.12\jackson-core-asl-1.9.12.jar;C:\Users\tanglei\.m2\repository\org\codehaus\jackson\jackson-mapper-asl\1.9.12\jackson-mapper-asl-1.9.12.jar;C:\Users\tanglei\.m2\repository\org\codehaus\jackson\jackson-jaxrs\1.9.12\jackson-jaxrs-1.9.12.jar;C:\Users\tanglei\.m2\repository\org\codehaus\jackson\jackson-xc\1.9.12\jackson-xc-1.9.12.jar;C:\Users\tanglei\.m2\repository\com\alipay\sofa\lookout\lookout-api\1.4.1\lookout-api-1.4.1.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2016.1.3\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain QuickStartClient
Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
[main] WARN com.alipay.sofa.common.log - Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
[main] INFO com.alipay.sofa.common.log - Welcome! Loading SOFA RPC Framework : 5.4.5_20180829115038, PID is:25544
[main] INFO com.alipay.sofa.common.log - Install Module: fault-tolerance
[main] INFO com.alipay.sofa.common.log - Install Module: sofaTracer-resteasy
[main] INFO com.alipay.sofa.common.log - The module lookout does not need to be loaded.
[main] INFO com.alipay.sofa.common.log - Install Module: sofaTracer
[main] INFO com.alipay.sofa.common.log - Refer consumer config : bolt://HelloService: with bean id rpc-cfg-0
[main] INFO com.alipay.sofa.common.log - Add provider of HelloService, size is : 1
Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
[SOFA-CLI-CONN-HelloService-3-T1] WARN com.alipay.sofa.common.log - Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
[SOFA-CLI-CONN-HelloService-3-T1] WARN com.alipay.sofa.common.log - [client side] bolt netty low water mark is 32768 bytes, high water mark is 65536 bytes
[Rpc-netty-client-worker-1-thread-1] INFO com.alipay.sofa.common.log - Connection channel registered: UNKNOWN-ADDR
[Rpc-netty-client-worker-1-thread-1] INFO com.alipay.sofa.common.log - Try connect to 127.0.0.1:8081
[Rpc-netty-client-worker-1-thread-1] INFO com.alipay.sofa.common.log - Connection channel active: 127.0.0.1:8081
[SOFA-CLI-CONN-HelloService-3-T1] INFO com.alipay.sofa.common.log - Connect to HelloService provider:bolt://127.0.0.1:8081 success ! The connection is 127.0.0.1:8081 <-> 127.0.0.1:57242
[main] INFO com.alipay.sofa.common.log - Load tracer impl success: sofaTracer, com.alipay.sofa.rpc.tracer.sofatracer.RpcSofaTracer@2d8f65a4
hello world !

参考官网帮助文档:http://www.sofastack.tech/sofa-rpc/docs/Getting-Started-With-RPC

完整工程:https://download.csdn.net/download/kevin2562/10679345

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值