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

新建一个maven工程

创建一个服务接口

package com.pcx.dubbo_facade;

public interface DemoService {
    String sayHello(String name);
}

运行 clean install打包dubbo-facade

接下来创建 dubbo-provider 工程

在pom.xml里面引用刚才的服务接口的jar包

	<span style="white-space:pre">		</span><dependency>
				<groupId>com.pcx</groupId>
			    <span style="white-space:pre">	</span><artifactId>dubbo-facade</artifactId>
				 <version>0.0.1-SNAPSHOT</version>
			</dependency>

编写服务实现类

package com.pcx.dubbo_prodiver;

import org.springframework.stereotype.Service;

import com.pcx.dubbo_facade.DemoService;

@Service("demoService")
public class DemoServiceImpl implements DemoService {

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

}

在resource目录下编写两个spring配置文件

dubbo-provider.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="dubbo-demo-provider" />

	<!--zk注册中心的地址-->
	<dubbo:registry protocol="zookeeper" address="192.168.1.10:2181" />

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

	<!-- 配置服务接口 -->
	<dubbo:service interface="com.pcx.dubbo_facade.DemoService" ref="demoService" />

</beans>  

spring-context.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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.2.xsd"
	default-autowire="byName" default-lazy-init="false">

	<!-- 采用注释的方式配置bean -->
	<context:annotation-config />

	<!-- 配置要扫描的包的路径 -->
	<context:component-scan base-package="com.pcx" />

	<import resource="dubbo-provider.xml" />
</beans>

在src/test/java路径下编写测试类启动dubbo服务

package com.pcx.dubbo_prodiver;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DubboProvider {
	private static final Log log = LogFactory.getLog(DubboProvider.class);

	public static void main(String[] args) {
		try {
			ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
			context.start();
		} catch (Exception e) {
			log.error("== DubboProvider context start error:",e);
		}
		synchronized (DubboProvider.class) {
			while (true) {
				try {
					DubboProvider.class.wait();
				} catch (InterruptedException e) {
					log.error("== synchronized error:",e);
				}
			}
		}
	}
}

运行这个测试类,我们可以在dubbo控制台看到我们暴露的服务

创建一个新工程名为dobbo-consumer

在pom.xml下依赖我们的服务接口的jar包

	<span style="white-space:pre">		</span><dependency>
				<groupId>com.pcx</groupId>
			    <artifactId>dubbo-facade</artifactId>
				 <version>0.0.1-SNAPSHOT</version>
			</dependency>

在src/main/resource/目录下新增两个spring配置文件

dubbo-consumer.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="dubbo-demo-consumer" />

	<!-- 填写zk注册中心的地址 -->
	<dubbo:registry protocol="zookeeper" address="192.168.1.10:2181" />

	<!-- 引用服务提供接口的路径 -->
	<dubbo:reference interface="com.pcx.dubbo_facade.DemoService" id="demoService" check="false" />

</beans>  

spring-context.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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.2.xsd"
	>

	<import resource="dubbo-consumer.xml" />

</beans>

编写调用服务的测试类在src/test/java

package com.pcx.dubbo_consumer;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.pcx.dubbo_facade.DemoService;

public class Consumer {
    private static final Log log = LogFactory.getLog(Consumer.class);

    public static void main(String[] args) throws InterruptedException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
        context.start();
        DemoService demoService = (DemoService)context.getBean("demoService");
        String hello = demoService.sayHello("world");
        log.info("打印"+hello);

        Thread.sleep(100000);

    }

}

运行测试类

调用成功

此时可以在dubbo控制台看到相关信息

时间: 2024-11-13 03:28:51

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

阿里dubbo框架使用系列:简介

阿里的dubbo框架是一个分布式服务的中间件,那么什么是分布式服务中间件呢? 如图所示我们,现在有一个用户系统,它对外提供一个查询用户信息的接口(这里我们统称为用户服务),其它系统可以调用它,这里我画了三个用户系统,代表着我们把用户系统部署在了三台服务器上面,通常来说,像用户查询这种服务一看就是非常热门的,其它系统基本都需要调用它,所以你单单部署在一台服务器上面可能不够,所以我们部署在了三台服务器上面,那么问题来了,你有三个用户系统,我要调用服务的时候我应该调用哪儿一台呢?这三个用户服务被调用的

阿里dubbo框架使用系列:开发环境搭建之dubbo控制台的安装

dubbo控制台的安装可以分为三步: 1安装jdk 2安装tomcat 3部署dubbo控制台的war 一:安装jdk 首先我们先下载jdk,到官网什么的都可以 然后上传到linux上面然后解压,解压命令的话 <span style="white-space:pre"> </span>tar -zxvf 你的jdk的tar包名字 解压完之后修改 /etc/profile文件中的内容,在文件末尾添加环境变量 使环境变量生效 <span style="

(转)dubbo框架基本分析

原文地址: https://my.oschina.net/zhengweishan/blog/698591 Dubbo架构基本分析 1. dubbo简单介绍 1.1 dubbo是什么 dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及"请求-响应"模式的信息交换方式. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支

Dubbo框架应用之(一)--服务体系

Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成,也是一个非常全面的SOA基础框架.其是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. 以下的四个阶段可以用官方的Dubbo架构路线图来概括, 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和 reque

dubbo框架介绍

1.背景 (#) 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本. 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键. 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率. 此时,用于加速前端页面开发的 Web框架(MVC) 是

阿里Dubbo疯狂更新,关Spring Cloud什么事?

最近,开源社区发生了一件大事,那个全国 Java 开发者使用最广的开源服务框架 Dubbo 低调重启维护,并且 3 个月连续发布了 4 个维护版本. 我上次在写放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结这篇文章的时候,就有很多的网友给我留言说,Dubbo 又开始更新了.我当然是清楚的,我也一直在关注着 Dubbo 的走向,在几个月前技术圈里面就有一个消息说是 Dubbo 又开始更新了,大家议论纷纷不知真伪.我还专门跑到 GitHub 上面进行了留言询问,最后在

Dubbo 微服务系列(03)服务注册

Dubbo 微服务系列(03)服务注册 [TOC] Spring Cloud Alibaba 系列目录 - Dubbo 篇 1. 背景介绍 图1 Dubbo经典架构图 注:本图来源 Dubbo官方架构图 表1 节点角色说明 节点 角色说明 Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中心 Monitor 统计服务的调用次数和调用时间的监控中心 Container 服务运行容器 在 Dubbo 微服务体系中,注册中心是其

基于dubbo框架下的RPC通讯协议性能测试

一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC请求,注册中心分配服务URL并路由到具体服务提供方(Provider),消费者和服务提供方建立网络连接,服务提供方在本地创建连接池对象并提供远程服务,对于长连接类型协议(如dubbo协议)将保持连接,减少握手认证,调用过程中可以避免频繁建立和断开连接导致的性能开销,保持长连接需要有心跳包的发送,所以

Dubbo框架应用之(四)--Dubbo基于Zookeeper实现分布式实例

上三篇文章主要是解决了概念性的补充和学习,充分结合实战来深入理解 入门实例解析 第一:provider-提供服务和相应的接口 创建DemoService接口 package com.unj.dubbotest.provider; import java.util.List; /** * 定义服务接口,该接口需要单独打包,在服务提供方和消费方共享 * * @author lishehe-2015年6月22日 * */ public interface DemoService { /* * sayH