使用dubbo实现两个项目之间的简单通信

关于在win10上安装的dubbo的上一篇文章已经说过了,点击跳转


前沿:本片文章只是使用得普通项目,并没有加入spring boot,没有war即没有web项目,后期测试得时候使用官方得方法加载相关得配置文件即可!

(0):测试项目结构

(1):首先大家可以看官网给出的使用示意图:

上一篇文章已经说过了,我们的代码只需要提高服务提供者和服务消费者,另外的两个注册中心和管理控制台,都是环境配置的

,注册中心是必须的!管理控制台随意(最好安装,方便查看与调试)

(2):既然是两个项目之前的通信,那么我们局需要建立2个项目,因为在后面的通信时,服务提供者与服务消费者都是使用暴露的接口来找到实现类,所有官方推荐我们将bean和相关接口类放在一个专门给暴露的项目中,其它项目可以使用dependency

来引入改项目,已达到通用的效果!

user-service-provider 服务提供者(这个项目是实现类)
user-service-consumer 服务消费者(这个项目是实现类)
taobao-interface 用于暴露服务,其中有user-service-provider的接口,与user-service-consumer的接口!

我这里就建立的3个maven的项目

(3):那么接下来,我们需要在user-service-provider项目和user-service-consumer中使增加dubbo的jar包和zookeeper客户端

并将taobao-interface项目引入到这两个项目中去,即pom.xml得文件需要增加如下依赖(还有javassist.jar)

<dependencies>
		<dependency>
			<groupId>cn.gxm.taobao</groupId>
			<artifactId>taobao-interface</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>

		<!-- 需要映引入改jar包,否则会初始化失败,报错说没有改jar包 -->
		<dependency>
			<groupId>org.javassist</groupId>
			<artifactId>javassist</artifactId>
			<version>3.23.1-GA</version>
		</dependency>


		<!-- 第一步引入dubbo依赖 -->
		<!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.6.2</version>
		</dependency>

		<!-- 第二步引入zookeeper客户端 -->
		<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>2.12.0</version>
		</dependency>

这里我需要说明得一点就是我使用得是dubbo得2.6.2得jar包,所以zookeeper得客户端是zookeeperorg.apache.curator,但是如果是2.5.0以下得需要使用得zookeeper得客户端是zkclient,即需要更改

(3):接下来我们需要将服务暴露出去!暴露的是接口,但是接口关联是实现类即可即我们在user-service-provider得src/main/resorces下建立一个provide.xml得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://dubbo.apache.org/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        http://dubbo.apache.org/schema/dubbo        http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
 
    <!-- 提供方应用信息,用于计算依赖关系可以随意,但是最好和项目名一致,并且不能重复 -->
    <dubbo:application name="user-service-provider"  />
 
    <!-- 使用zooKeeper广播注册中心暴露服务地址,本机得2181端口,
         但是如果是在虚拟机上,根据增加得Ip进行修改即可!
         如果使用得不说zookeeper作为注册中心,需要根据你自己得设置
         有如下几种:
                (1)Multicast
                (2)zookeeper (官方推荐使用)
                (3)Redis
                (4)Simple
     -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
 
    <!-- 
            用dubbo协议在20880端口暴露服务,即在20880端口通信
            name可以根据官方得说明有以下几种
                (1)multicast
                (2)zookeeper
                 (3) redis  
                (4)simple 如果是这个,name可以省略!
            prot 
                  大家随意!即索命服务提供者和服务消费者在那个端口通信!
    --> 
    <dubbo:protocol name="dubbo" port="20880" />
 
    <!-- 
        声明需要暴露的服务接口 (这里暴露的是接口)
        但是接口关联了实现类,所以等下消费者连接提供者时,使用得就是实体类
    -->
    <dubbo:service interface="cn.gxm.taobao.serviceInterface.UserService" ref="userServiceImpl" />
 
    <!-- 和本地bean一样实现服务 -->
    <bean id="userServiceImpl" class="cn.gxm.taobao.userService.userServiceImpl" />
</beans>

(4):好了服务提供者已经完成,关于相关实现类我这里就不说了

在user-service-provice中写一个加载配置文件得类!

 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");
	     context.start();
	     System.in.read();

 (5):首先运行zookeeper(zkservice.cmd)和minitor得jar包(Java  -jar dubbo-admin-0.0.1-SNAPSHOT.jar )运行后,登陆minitor(http://localhost:7001):会出现一个服务提供者!如下:服务提供者为1,消费者为0!


以上就是服务提供者以完成:接下来就是无法消费者:

(6):完成服务消费者得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:context="http://www.springframework.org/schema/context"
    xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
            
    http://dubbo.apache.org/schema/dubbo       
    http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    
   
	<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样,同样不能重复 -->
	<dubbo:application name="order-service-consumer" />

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

	<!-- 
        生成远程服务代理,使用提供者暴露的接口与之前在provider.xml中暴露得接口要一样!
        那么就会使用接口对应得实现类 
        此时得id。其实很重要,但是们这里是一个小得demo用不到,后面再做更加复杂得项目时
        会用到
    -->
	<dubbo:reference id="userService"
		interface="cn.gxm.taobao.serviceInterface.UserService" />
</beans>

(7):加载consumer.xml运行即可:

package cn.gxm.taobao.orderService;

import java.io.IOException;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.gxm.taobao.bean.User;
import cn.gxm.taobao.serviceInterface.OrderService;
import cn.gxm.taobao.serviceInterface.UserService;

public class TestConsumer {
	public static void main(String[] args) throws IOException {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml");
		context.start();
	UserService userService = (UserService)context.getBean(UserService.class);
		User user = userService.getAddressById(1);
		System.out.println(user.toString());
		System.out.println("调用完成");
        System.in.read();
	}
}

(8):结果:

 (9):完成!

猜你喜欢

转载自blog.csdn.net/qq_38263083/article/details/83417933
今日推荐