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协议的消费者示例及详解(三)

接下来就剩下消费者的模块了,消费者模块跟提供者类似,创建maven项目、引入接口DubboInterface.jar包、增加Spring依赖、Dubbo依赖。 1、spring.xml配置文件 ...
  • weigs81082580
  • weigs81082580
  • 2017年01月23日 17:54
  • 2031

dubbo简单搭建及dubbo提供者和消费者demo

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型...
  • luo10086csdn
  • luo10086csdn
  • 2017年07月01日 00:47
  • 2401

dubbo 搭建 创建消费者 调用消费者 即是消费者又是提供者(六)

代码示例访问我的github:https://github.com/WilsonZhang8/dubbo-demo 在第五部分开发simple相关模块并作为生产者提供服务。现使用相同的方式创建...
  • zghwaicsdn
  • zghwaicsdn
  • 2016年08月20日 11:34
  • 9280

Java实现dubbo消息提供者及消费者

  • 2016年08月05日 15:33
  • 33KB
  • 下载

阿里dubbo框架使用系列:服务提供者和消费者的创建和使用

新建一个maven工程 创建一个服务接口 package com.pcx.dubbo_facade; public interface DemoService { String sa...
  • u011325787
  • u011325787
  • 2016年05月10日 09:15
  • 8000

Dubbo之旅--Provider示例

在本篇文章中我们将通过集体的示例来对Dubbo的提供和消费进行代码层面的认识.这里所介绍的是基本的提供者和消费者通过Spring容器来进行相关的提供和消费的服务.首先看整个示例的项目结构如下:   ...
  • jnqqls
  • jnqqls
  • 2015年03月31日 00:14
  • 21270

dubbo(二)普通项目dubbo服务化改造+provider构建为jar包运行

前面写过 dubbo的 hello world 和 一个普通的ssm框架集成 的2个项目.  今天我们来将 普通的项目 改造成dubbo服务的结构. 并且provider以jar包方式运行. 前面 d...
  • qq315737546
  • qq315737546
  • 2016年08月20日 21:45
  • 7504

dubbo 学习笔记 -- provider端

服务端的配置文件:    provider.xml
  • coffeesmile
  • coffeesmile
  • 2013年06月03日 15:20
  • 16774

dubbo(分布式架构)+zookeeper(注册中心)+spring(provider和consumer) 基本使用

1.前言 看到网上各种dubbo的教程,应该基本上都是从一个地方贴过来的,一看到千篇一律的provider中main方法中的system.in.read()就头疼了,随便找找都是一个样,估计都没自己...
  • jyf211314
  • jyf211314
  • 2015年07月24日 14:44
  • 10181

Dubbo学习笔记(三) Provider和Consumer

Dubbo学习笔记(三) Provider和ConsumerProvider这里我们使用spring-boot来作为框架,搭建dubbo服务。 新建maven工程,在pom中加入 ...
  • kang389110772
  • kang389110772
  • 2017年03月17日 20:03
  • 732
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Dubbo基础篇_03_简单的Dubbo提供者provider与消费者consumer
举报原因:
原因补充:

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