从0开始搭建简单的dubbo-点对点

dubbo简单的点对点方式搭建

dubbo的基础理论这里不做赘述,直接搭建简单的入门环境

1.quickstart的方式创建一个dubbo-order项目和dubbo-user项目,可以删除dubbo-order项目的src目录

2.quickstart的方式在dubbo-order项目中创建两个module:order-api和order-provider

3.dubbo-order这个父pom.xml文件中添加dependencyManagement 

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.test.dubbo.order</groupId>
<artifactId>order-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
4.order-provider中添加order-api的使用依赖和dubbo的依赖
order-provider:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>com.test.dubbo.order</groupId>
<artifactId>order-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

</dependencies>
5.添加实现
order-api中创建IOrderService接口以及OrderRequest和OrderResponse类(这两个类要序列化)

order-provider中创建OrderServiceImpl实现类以及Test类

public class OrderServiceImpl implements IOrderService {
@Override
public OrderResponse doOrder(OrderRequest request) {
System.out.println("请求request:"+request);
OrderResponse response = new OrderResponse();
response.setCode("1000");
response.setMessage("请求成功");
return response;
}
}
public class Test {
public static void main(String[] args) throws IOException {
System.out.println("start");
// Main.main(args);
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("file:E:\\gitRepertory\\dubbo-order\\order-provider\\src\\main\\java\\resources\\order-pointer.xml");
context.start();
System.in.read();
System.out.println("end");
}
}
6.将order-api install,注意如果此项目有改动需要重新打包运行
7.dubbo-user中也添加order-api的使用依赖、添加dubbo的依赖
dubbo-user:
<dependencies>
<dependency>
<groupId>com.test.dubbo.order</groupId>
<artifactId>order-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>

</dependencies>
8.这里要建立order-api和order-provider的目的是因为api提供接口,provider提供接口的实现
注意:如果打完包之后还是没引入,可以看下包里面是否有打上对应的service接口,如果没有打上对应接口的话,可以看下order-api的pom.xml文件如下就可以了,主要保证下面的正确
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.dubbo.order</groupId>
<artifactId>order-api</artifactId>
<version>1.0-SNAPSHOT</version>
<name>My Simple Webx Application</name>
<properties>...

9.使用dubbo:
order-provider项目中添加order-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-2.5.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="user-consumer" owner="Jerry"/>

<!-- 暴露服务地址所对应的注册中心地址 -->
<dubbo:registry address="N/A" />

<!-- 当前服务发布以来的协议:webService、Thrift、Hessain、http
用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />

<!-- 声明需要暴露的服务 -->
<dubbo:service interface="service.IOrderService" ref="orderService" />
<!-- 服务实现 -->
<bean id="orderService" class="service.impl.OrderServiceImpl" />
</beans>

dubbo-user项目中添加user-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-2.5.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="order-provider" owner="Tom"/>

<!-- 暴露服务地址所对应的注册中心地址 -->
<dubbo:registry address="N/A" />

<!-- 当前服务发布以来的协议:webService、Thrift、Hessain、http
用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />

<!-- 生成一个远程调用的服务代码 url直连的方式,此处使用的是点对点的方式 -->
<dubbo:reference id="orderService" interface="service.IOrderService"
url="dubbo://ip:20880/service.IOrderService"/> 注意:这个ip可以从order-provider启动的时候控制台查看,这里url的定义就是采用url直连的方式

</beans>
注意:
dubbo-user和order-api的pom.xml文件中添加dubbo依赖,否则启动时候会报错
无法读取方案文档 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd', 原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是 <xsd:schema>
10.dubbo-user中创建运行主类:
public class UserTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("user-pointer.xml");
IOrderService service = (IOrderService) context.getBean("orderService");
OrderRequest request = new OrderRequest();
request.setName("Tom");
OrderResponse response = service.doOrder(request);
System.out.println("response:"+response);
}
}
运行order-api的main方法
  成功之后运行dubbo-user的main方法
最终
dubbo-user的控制台上打印出如下信息证明点对点模式成功:
response:OrderResponse{code='1000', data=null, message='请求成功'}

总结:
order-api封装外部调用的接口
order-provider做业务的具体实现
dubbo-user做服务的消费方
order-provider和dubbo-user中添加dubbo的注册文件和order-api、dubbo的依赖,因为它们是具体的服务提供方和消费方


















 

posted on 2018-08-16 17:07  companion  阅读(790)  评论(1编辑  收藏  举报