Dubbo:服務提供者、消費者相關配置


1.架構

 

2.提供者配置

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!--指定當前服務的名字,不要與別的服務同名-->
    <dubbo:application name="dubbo-server-provider"/>
    <!--指定注冊中心位置-->
    <dubbo:registry address="zookeeper://192.168.10.132:2181"/>
    <!--指定通信規則(協議/端口)-->
    <dubbo:protocol name="dubbo" port="10000"/>
    <!--暴露服務 ref:指向服務真正的實現對象-->
    <dubbo:service interface="com.wj.UserService" ref="userServiceImpl"/>

    <!--服務實現-->
    <bean id="userServiceImpl" class="com.wj.service.impl.UserServiceImpl"/>
</beans>

 service實現:

注意實體類需要實現Serializable接口,否則會報錯,因為遠程調用過程有序列化和反序列化過程。

public class UserServiceImpl implements UserService {

    @Override
    public List<User> getAll() {
        User user1 = new User(1, "張三", 12, "北京");
        User user2 = new User(2, "李四", 13, "北京");
        return Arrays.asList(user1, user2);
    }
}

Main方法:

public class ProviderMain {
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        context.start();
        System.in.read();
    }
}

  

3.消費方配置

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.3.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!--消費者服務名-->
    <dubbo:application name="dubbo-server-consumer"/>
    <!--注冊中心地址-->
    <dubbo:registry address="zookeeper://192.168.10.132:2181"/>
    <!--聲明需要遠程調用的遠程服務接口,生成遠程服務代理-->
    <dubbo:reference interface="com.wj.UserService" id="userServiceImpl"/>

    <context:component-scan base-package="com.wj"/>

</beans>

 消費者類:

@Controller
public class UserController {
    @Autowired
    UserService userService;
    public List<User> getAll(){
        return userService.getAll();
    }
}

Main方法:

public class ConsumerMain {
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserController bean = context.getBean(UserController.class);
        List<User> users = bean.getAll();
        for (User user : users) {
            System.out.println(user);
        }
        System.in.read();
    }
}

 4.分別運行兩個main方法 

消費方打印結果:

 

 dubbo admin上服務調用關系:

代碼已上傳至github


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM