dubbo学习二简单dubbo实现

用maven项目来完成本次学习

准备工作

框架版本:

  • tomcat8,jdk7
  • dubbo-admin-2.4.1.war 这是dubbo管理war包,修改war直接扔到tomcat跑就可以了。
  • zookeeper-3.4.5 本实例使用zookeeper作为注册中心,其实还能使用其他的,这里不详细讲解。
2.1 搭建zookeeper(我这里是window环境)

请参考window7环境下ZooKeeper的安装及运行 单机搭建很简单。

2.2 部署dubbo-admin-2.4.1.war

直接放到tomcat的webapp文件夹下,运行tomcat。

  • 配置信息都在WEB-INF/dubbo.properties下,管理员账号密码都是root,zookeeper的地址等。

打开浏览器输入:http://localhost:8080/dubbo-admin-2.4.1 
(运行前记得先打开zookeeper服务) 
输入账号密码root,进入这个页面就算成功了。 
这里写图片描述

三、创建提供者provider工程(使用maven构建)

导入依赖, pom.xml 如下:

<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.6</version>
</dependency>
<!-- 添加zk客户端依赖 -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>

<!==公共服务接口=>

<groupId>com.itmayiedu</groupId>
<artifactId>itmayiedu-dubbo-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

</dependencies>

在service包下创建接口UserService .java



public interface UserService {


 //提供服务  使用userId查找用户信息FS
 public String getUserId(Integer id);

}

在productor工程下实现接口UserService .java



public class UserServiceImpl implements UserService {


public String getUserId(Integer id) {
System.out.println("被客户端(消费者)消费....id:" + id);
if (id == 1) {
return "艾福杰尼";
}
if (id == 2) {
return "GAI";
}
if (id == 3) {
return "码云";
}
return "未找到...";

}
}

接下来填写provider里面来暴露接口:新建一个xml: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="provider" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 用dubbo协议在29014端口暴露服务 -->
<dubbo:protocol name="dubbo" port="29014" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.itmayiedu.service.UserService"
ref="userService" />
<!-- 具体的实现bean -->
<bean id="userService" class="com.itmayiedu.service.impl.UserServiceImpl" />
</beans>

到此服务接口已经定义好,接下来要通过main方法读取配置文件,来达到zookeeper服务注册的效果。

创建ProviderApp.java

public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("provider.xml");
app.start();
System.out.println("服务发布成功...");
System.in.read();//让程序阻塞。
}

运行ProviderApp,即可。

如何校验是否成功注册?进入dubbo-admin,点菜单栏上的提供者,如下图就注册成功了,成功暴露接口。 
提供者

创建消费者consumer项目:

引入依赖, pom.xml 如下
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.6</version>
</dependency>
<!-- 添加zk客户端依赖 -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>com.itmayiedu</groupId>
<artifactId>itmayiedu-dubbo-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
配置 dubbo-consumer.xml ,向zookeeper注册接口:
<?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="consumer" />
<!-- 使用multicast广播注册中心暴露发现服务地址 -->
<dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="userService" interface="com.itmayiedu.service.UserService" />
</beans>
创建ConsumerApp.java,运行测试:
 public static void main(String[] args) throws IOException {
 ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("consumer.xml");
 app.start();
 UserService userService=(UserService) app.getBean("userService");
 String name = userService.getUserId(3);
 System.out.println("消费端从生产者获取到 name:"+name);
 System.in.read();
 
}
运行结果
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
消费端从生产者获取到 name:码云
至此,已经完成 在main方法模拟调用远程接口










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值