• zookeeper+dubbo-admin开发dubbo应用


     前面的章节中我们已经安装好了zookeeper,tomcat了。今天我们来实现一个完整的从dubbo消息产生到消费的完整流程。

    1.下载 dubbo-admin-2.4.1.war

    到我的百度云盘下载 http://pan.baidu.com/s/1nvO5CCT

    2.解压到tomcat中

    unzip dubbo-admin-2.4.1.war -d /apps/tomcat/tomcat3/apache-tomcat-7.0.69/webapps/admin

    3.修改dubbo配置文件,指定注册中心地址

    cd /apps/tomcat/tomcat3/apache-tomcat-7.0.69/webapps/admin/WEB-INF

    vi dubbo.properties 

    4.启动zookeeper

    /apps/zookeeper/zookeeper-3.4.6/bin/zkServer.sh start

    5.启动tomcat

     sh /apps/tomcat/tomcat3/apache-tomcat-7.0.69/bin/startup.sh 

    6.访问注册中心控制台

    http://192.168.158.129:8080/admin

    输入账号密码 root/root

    登录成功

     

    7.dubbo api 

     pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.yum</groupId>
      <artifactId>dubbo-api</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>dubbo-api</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        
        <!-- dubbo start -->
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>dubbo</artifactId>
    			<version>2.5.3</version>
    		</dependency>
    
    		<dependency>
    			<groupId>org.apache.zookeeper</groupId>
    			<artifactId>zookeeper</artifactId>
    			<version>3.4.6</version>
    		</dependency>
    
    		<dependency>
    			<groupId>com.github.sgroschupf</groupId>
    			<artifactId>zkclient</artifactId>
    			<version>0.1</version>
    		</dependency>
    		<!-- dubbo end -->
        
      </dependencies>
    </project>
    

    接口 DubboServer.java

    package com.yum.service;
    /**
     *Administrator
     *2016年8月9日
     *TODO
     */
    public interface DubboServer {
    
    	public String hello(String name);
    }
    

      

      接口 DubboProvider.java

    package com.yum.service;
    
    import com.yum.entity.Person;
    
    /**
     *Administrator
     *2016年8月10日
     *TODO
     */
    public interface DubboProvider {
    	
    	public String PersonInfo(Person person);
    	
    }
    

      Person.java

    package com.yum.entity;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     *Administrator
     *2016年8月10日
     *TODO
     */
    public class Person implements Serializable{
    
    	private static final long serialVersionUID = -3829509742163991304L;
    	private String name;
    	private int age;
    	private List<Object> list = new ArrayList<Object>();
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public List<Object> getList() {
    		return list;
    	}
    	public void setList(List<Object> list) {
    		this.list = list;
    	}
    	
    	
    	
    }
    

      

    8.dubbo consumer 消费者 依赖dubbo api 模块

    pom.xml

    <?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 ">
    	<!-- consumer application name -->
    	<dubbo:application name="dubbo_client" />
    	<!-- 使用zookeeper注册中心暴露服务地址 --> 
    	<dubbo:registry address="zookeeper://192.168.158.129:2181" check="false" subscribe="true" register="true" ></dubbo:registry>
    <!-- 	<dubbo:protocol name="dubbo" port="20880" /> -->
    	
    	<dubbo:consumer timeout="5000" />
    	<!-- which service to consume? -->
    	<dubbo:reference id="dubboService" interface="com.yum.service.DubboServer" version="1.0" />
    	<dubbo:reference id="dubboProvider" interface="com.yum.service.DubboProvider" version="1.0" />
    </beans>
    

      

     DubboClientTest.java 来一个测试类

    package com.dubbo.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.yum.entity.Person;
    import com.yum.service.DubboProvider;
    import com.yum.service.DubboServer;
    
    /**
     *Administrator
     *2016年8月10日
     *TODO
     */
    public class DubboClientTest {
    	public static void main(String[] args) {
    		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
    				new String[] { "dubbo_client.xml" });
    		context.start();
    		DubboServer dubboServer = (DubboServer) context.getBean("dubboService");
    		DubboProvider dubboProvider = (DubboProvider) context.getBean("dubboProvider");
    		Person person = new Person();
    		person.setAge(22);
    		person.setName("qihh");
    		List list = new ArrayList();
    		list.add("abc");
    		list.add("123");
    		list.add("zzzz");
    		person.setList(list);
    		System.out.println(dubboServer.hello("hello world"));
    		System.out.println(dubboProvider.PersonInfo(person));
    		
    	}
    	
    }
    

      

    9.dubbo provider 生产者 依赖dubbo api 模块

     pom.xml

    <?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管理页面比较清晰是哪个应用暴露出来的 -->
    	<dubbo:application name="dubbo_provider" />
    	<!-- 使用zookeeper注册中心暴露服务地址 --> 
    	<dubbo:registry address="zookeeper://192.168.158.129:2181" check="false" subscribe="false" register=""></dubbo:registry>
    	<!-- 要暴露的服务接口 -->  
    	<dubbo:service interface="com.yum.service.DubboServer" ref="dubboService" version="1.0"/>
    	<dubbo:service interface="com.yum.service.DubboProvider" ref="dubboProvider" version="1.0"/>
    	<!-- expose this service through dubbo protocol, through port 20880 -->
    	<dubbo:protocol name="dubbo" port="20880" />
    	<!-- which service interface do we expose? -->
    	<!-- bean配置 -->
    	<bean id="dubboService" class="com.qihh.dubbo.service.impl.DubboServerImpl" />
    	<bean id="dubboProvider" class="com.qihh.dubbo.service.impl.DubboProviderImpl" />
    </beans> 
    

      

     接口实现

    DubboProviderImpl.java

    package com.qihh.dubbo.service.impl;
    
    import java.util.Iterator;
    import java.util.List;
    
    import org.apache.log4j.Logger;
    
    import com.yum.entity.Person;
    import com.yum.service.DubboProvider;
    
    /**
     *Administrator
     *2016年8月10日
     *TODO
     */
    public class DubboProviderImpl implements DubboProvider {
    
    	Logger logger = Logger.getLogger(getClass());
    	public String PersonInfo(Person person) {
    		logger.info("name:"+person.getName()+" age:"+person.getAge());
    		List list = person.getList();
    		Iterator<String> ite = list.iterator();
    		while(ite.hasNext()){
    			String obj = ite.next();
    			logger.info(obj);
    		}
    		return "success";
    	}
    
    }
    

      DubboServerImpl.java

    package com.qihh.dubbo.service.impl;
    
    import com.yum.service.DubboServer;
    
    /**
     *Administrator
     *2016年8月10日
     *TODO
     */
    public class DubboServerImpl implements DubboServer{
    
    	public String hello(String name) {
    		return "hello "+name;
    	}
    	
    }
    

      

    10.部署调用

     部署 dubbo-server

    调用 DubboClientTest.java

    11.查看zookeeper注册中心

     

    完整的安装包已经源码可以去我的百度云找。

    百度云: http://pan.baidu.com/s/1nvO5CCT

  • 相关阅读:
    博客园-随笔分类批量修改
    【读书笔记】--少有人走的路①:心智成熟的旅程
    自定义菜单用例
    自定义菜单创建接口
    发送消息---被动回复用户消息
    接收消息----接收语音识别结果
    接收消息----接收事件推送
    微信开发入门教程
    Hadoop维护IPC链接
    Hadoop建立IPC连接和数据读写
  • 原文地址:https://www.cnblogs.com/yun965861480/p/6257670.html
Copyright © 2020-2023  润新知