莫大人

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

posted on 2017-01-06 20:43  莫大人  阅读(423)  评论(0编辑  收藏  举报

导航