快速开始。

    本地安装后,maven install 到本地仓库,dubboxjar包就生成了,使用者可以通过

    坐标引入到本地工程。

    1. <groupId>org.springframework</groupId>
    2. <artifactId>spring-context</artifactId>
    3. <version>3.2.4.RELEASE</version>
    4. </dependency>
    5. <dependency>
    6. <groupId>org.apache.zookeeper</groupId>
    7. <artifactId>zookeeper</artifactId>
    8. <version>3.4.6</version>
    9. </dependency>
    10. <dependency>
    11. <groupId>com.github.sgroschupf</groupId>
    12. <artifactId>zkclient</artifactId>
    13. <version>0.1</version>

    提示:如果想使用redis等其他注册中心,请引入jar包。

    拿登录做个例子,如果在本地有个登录的服务.

    1. <dubbo:application name="testProvider" owner="shuvigoss" organization="ecs"/>
    2. <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    3. <dubbo:service interface="com.shuvigoss.services.LoginService" ref="login"/>

    只需在spring中使用<dubbo:service interface="com.shuvigoss.services.LoginService" ref="login"/>暴露出来,dubbox会在zookeeper中将服务注册。

    服务调用方(Consumer)

    通过dubbo:reference从zookeeper处拿到com.shuvigoss.services.LoginService服务的服务器列表。

    1. <!--spring 注入loginService 看似跟本地调用一样-->
    2. <bean id="ecard" class="com.shuvigoss.services.ECardServiceImpl">
    3. <property name="loginService" ref="loginService"></property>
    4. </bean>
    5. //本地取卡服务
    6. public class ECardServiceImpl implements ECardService {
    7. private LoginService loginService;
    8. public String getCard(String username, String password) {
    9. LoginResult loginResult = loginService.login(new User(username, password));
    10. if (Objects.equals("0000", loginResult.getResponseCode())) {
    11. return "AAAA";
    12. }
    13. //登录失败返回空
    14. return null;
    15. }
    16. public void setLoginService(LoginService loginService) {
    17. this.loginService = loginService;
    18. }
    19. }
    20. //调用点
    21. assertEquals("AAAA", eCardService.getCard("shuwei", "111"));

    我认为有3种方式去实现。

    1. 使用String json方式进行交互。
    2. 将各业务平台API进行梳理,API无需过多的说明,直接把interface、javabean放到服务器上,谁需要调用谁就将所需文件集成到本地。(适合其他不是很熟悉的业务平台)