Dubbo基础篇_03_简单的Dubbo提供者provider与消费者consumer

原创 2016年03月25日 12:38:43

一、提供方Provider

1.接口

public interface DemoService {

	String sayHello(String name);

	public List getUsers();

}

2.实现类

public class DemoServiceImpl implements DemoService {

	public String sayHello(String name) {
		return "Hello " + name;
	}

	public List getUsers() {
		List list = new ArrayList();
		User u1 = new User();
		u1.setName("jack");
		u1.setAge(20);
		u1.setSex("m");

		User u2 = new User();
		u2.setName("tom");
		u2.setAge(21);
		u2.setSex("m");

		User u3 = new User();
		u3.setName("rose");
		u3.setAge(19);
		u3.setSex("w");

		list.add(u1);
		list.add(u2);
		list.add(u3);
		return list;
	}
}
3.model类

/**
 * 实现序列化
 * @author Administrator
 *
 */
public class User implements Serializable {
	private static final long serialVersionUID = 1L;
	private int age;
	private String name;
	private String sex;

	public User() {
		super();
	}

	public User(int age, String name, String sex) {
		super();
		this.age = age;
		this.name = name;
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

}
4.applicationContenxt.xml配置

注意:提供方需要指定端口,不同提供方需要使用不同端口,不然会有端口冲突,使用的端口需要在防火墙iptables中配置允许通过

消费方不用指定端口

<?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="demo_provider" />

	<!-- 使用zookeeper注册中心暴露服务地址 -->
	<dubbo:registry address="zookeeper://192.168.1.121:2181" />

	<!-- 用dubbo协议在20880端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20880" />

	<!-- 声明需要暴露的服务接口 -->
	<dubbo:service interface="com.unj.dubbotest.provider.DemoService"
		ref="demoService" />
		
		
	<!-- 具体的实现bean,用来注入-->
	<bean id="demoService" class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />

</beans>
5.提供方Provider测试方法

public class Provider {

	public static void main(String[] args) throws Exception {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				new String[] { "applicationContext.xml" });
		context.start();
		System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
	}
}

运行结果:



6.在Dubbo管理控制台上查看发布的提供方



二、消费方Consume

1.引用提供方的接口

2.消费方applictionContenxt.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:application name="hehe_consumer" />

	<!-- 使用zookeeper注册中心暴露服务地址 -->
	<dubbo:registry address="zookeeper://192.168.1.121:2181" />

	<!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->
	<dubbo:reference id="demoService"
		interface="com.unj.dubbotest.provider.DemoService" />

</beans>
3.消费方调用提供方

public class Consumer {

	public static void main(String[] args) throws Exception {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				new String[] { "applicationContext.xml" });
		context.start();

		DemoService demoService = (DemoService) context.getBean("demoService");
		String hello = demoService.sayHello("tom");
		System.out.println(hello);

		List list = demoService.getUsers();
		if (list != null && list.size() > 0) {
			for (int i = 0; i < list.size(); i++) {
				System.out.println(list.get(i));
			}
		}
		System.in.read();
	}

}

控制台信息输出



dubbo管理控制台查看


版权声明:本文为博主原创文章,未经博主允许不得转载。

Dubbo服务端/客户端demo

项目组采用分布式服务,线上有几十个应用,RPC调用完全依靠Dubbo。平时开发一直都是用其他人搭好的dubbo环境,最近自己抽空独立的搭建dubbo小demo,一个服务端,一个客户端。     服务端...
  • bruce128
  • bruce128
  • 2015年07月23日 17:08
  • 17934

Java工具类---数字计算工具 NumberUtil

import java.util.HashSet; import java.util.Random; import java.util.Set; /** * * NumberUt...
  • hj7jay
  • hj7jay
  • 2016年04月28日 14:04
  • 1927

dubbo+zookeeper与提供者、消费者之间端口通信问题(No provider available for the service)

1、先来一段异常看看:No provider available for the service16:05:25.755 [localhost-startStop-1] WARN o.s.w.c.s...

dubbo提供者和消费者例子

  • 2016年04月23日 14:30
  • 20.36MB
  • 下载

由浅入深分布式(5)dubbo提供者用内网地址注册provider以及 spring boot admin client用主机名注册spring boot admin server

之前遇到过dubbo提供者用内网地址注册provider的问题 当时改了host文件成功了 但是没有想为什么会有这个问题 现在使用spring boot admin 来监控spring boot项目出...
  • kkgbn
  • kkgbn
  • 2017年02月23日 14:57
  • 839

dubbo提供者消费者jar包

  • 2014年03月14日 16:42
  • 32.82MB
  • 下载

dubbo提供者和消费者工程

  • 2017年03月27日 09:12
  • 48KB
  • 下载

dubbo学习-1-服务提供者&服务消费者&依赖

远程服务(Spring配置) 将服务定义部分放在服务提供方remote-provider.xml,将服务引用部分放在服务消费方remote-consumer.xml。并在提供方增加暴露服务配置,在...

Dubbo服务提供者以及消费者实例

  • 2017年08月15日 18:07
  • 17.15MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Dubbo基础篇_03_简单的Dubbo提供者provider与消费者consumer
举报原因:
原因补充:

(最多只允许输入30个字)