zookeeper小例子

第一步:先不管那麼多,加入相關jar包.

<!-- dubbo -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.5.3</version>
    <exclusions>
        <exclusion>
            <artifactId>spring</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.8</version>
</dependency>
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
</dependency>
<!-- dobbo webservice -->
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-simple</artifactId>
    <version>2.6.1</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http</artifactId>
    <version>2.6.1</version>
</dependency>

2.配置dubbo配置文件:提供者和消費者的這份配置文件是一樣的.都是使用spring集成的方式:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!-- 服務提供方應用信息,用於計算依賴關係 -->
    <dubbo:application name="${dubbo.application.name}"/>
    <!-- 使用zookeeper註冊中心暴露服務地址 -->
    <dubbo:registry address="${dubbo.registry.address}"/>
    <!-- dubbo協議在20880端口暴露服務 -->
    <dubbo:protocol name="${dubbo.protocol.name}" port="${dubbo.protocol.port}"/>
    <!-- 引用需要對外發布的服務接口配置 -->
    <import resource="dubbo-server-service.xml"/>

    <!--<import resource="dubbo-client-service.xml"/>-->
</beans>
dubbo.application.name=provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
3.提供者提供服務的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!-- 服務器端配置需要暴露的服務接口 -->

    <dubbo:service interface="com.ihuaqiang.spring.service.facade.UserService" ref="userService" timeout="1200000"
                   version="1.0.0"/>


    <bean name="userService"
          class="com.ihuaqiang.spring.service.UserServiceImpl"/>

</beans>
4.消費者接收服務的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!-- 客戶端聲明需要引用的服務接口 -->

    <dubbo:reference id="userService" interface="com.ihuaqiang.spring.service.facade.UserService"
                     version="1.0.0"/>


</beans>
配置完成之後使用Junit來測試下:

provider類:這裏採用輸入流的阻塞方式使服務一直在啓動狀態:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-context.xml", 
        "classpath:globals.datasource.xml"})
public class Provider {




    @Test
    public void test() {

        System.out.println("回車鍵結束...");
        try {
            Log4jConfigurer.initLogging("classpath:log4j.properties");
        } catch (FileNotFoundException ex) {
            System.err.println("Cannot Initialize log4j");
        }

        int read = 0;
        try {
            read = System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(read);


    }

}

消費者接收的類:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-context.xml", "classpath:globals.datasource.xml"})
public class Consumer {

   Logger logger = LogManager.getLogger(this.getClass());


    @Autowired(required = false)
    private UserService userService;


    @Test
    public void test() throws Exception {
        logger.warn(userService.getUser().getName());
    }


}

控制檯有打印,說明服務接收成功啦.生氣


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章