当前位置:   article > 正文

Dubbo中Provider与Consumer搭建_dubbo配置consumer和provider连接池

dubbo配置consumer和provider连接池

1.Provider搭建

a.新建Maven Project, 里面只有接口(dubbo-service)
RPC框架不希望Consumer知道具体实现.如果实现类和接口在同一个项目中,Consumer依赖这个项目时,就会知道实现类具体实现.

package com.shi.api;
/**
 * 接口
 * @author shixiangcheng
 * 2019-06-07
 */
public interface UserService {
	public String sayHi(String name);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

b.新建Maven Project, 写接口的实现类(dubbo-service-impl)
在duboo-service-impl中配置pom.xml

   <dependency>
      <groupId>com.shi</groupId>
      <artifactId>dubbo-service</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

接口实现类

package com.shi.api.impl;
import com.shi.api.UserService;
/**
 * 接口实现类
 * @author shixiangcheng
 * 2019-06-07
 */
public class UserServiceImpl implements UserService {
	public String sayHi(String name) {
		return "Hello "+name;
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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-2.5.xsd
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
	<!--应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者 -->
	<dubbo:application name="dubbo-provider"/>
    <!--注册中心配置,用于配置连接注册中心的相关信息。-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <!--协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。20880-->
    <dubbo:protocol name="dubbo" port="20888"/>
    <dubbo:monitor protocol="registry"/>
    <!-- 和本地bean一样实现服务 -->
    <bean id="userService" class="com.shi.api.impl.UserServiceImpl"/>
    <!--服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。-->
    <dubbo:service retries="0" interface="com.shi.api.UserService" ref="userService" timeout="100000"/>
</beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

applicationContext.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:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd 
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
   <import resource="dubbo-provider.xml"/>
   	<!-- spring容器扫描指定包下的所有类,如果类上有注解  那么根据注解产生相应bean对象已经映射信息 -->
	<context:component-scan base-package="com.shi"/>
</beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

提供方测试类

package com.shi.test;
import java.io.IOException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * 提供方测试类
 * @author shixiangcheng
 * 2019-06-07
 */
public class Test {
	public static void main(String [] args) throws IOException{
		ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
		context.start();//启动Spring容器
		System.in.read();
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2.Consumer搭建

a.新建Maven Project(dubbo-consumer)
在duboo-consumer中配置pom.xml

  <dependency>
      <groupId>com.shi</groupId>
      <artifactId>dubbo-service</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

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-2.5.xsd
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
	<!--消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
	<dubbo:application name="dubbo-consumer"/>
    <!--使用zookeeper注册中心暴露服务地址-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <!--生成远程服务代理,可以像使用本地bean一样使用服务,检查级联关系,默认为true,当有依赖服务的时候,需要根据需求进行设置-->
    <dubbo:reference id="userService" check="false" interface="com.shi.api.UserService"/>
</beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

测试类

package com.shi.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.shi.api.UserService;
/**
 * 消费方测试类
 * @author shixiangcheng
 * 2019-06-07
 */
public class Test {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext
		     (new String[]{"dubbo-consumer.xml"});
		 //@Reference从注册中心得到代理对象,通过代理对象调用真实方法
		UserService userService=(UserService)context.getBean("userService");
		System.out.println(userService.sayHi("World"));
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3.用telnet远程调用dubbo

a.开启telnet功能(下面是windows 10操作系统的截图)
在这里插入图片描述
b.将提供方服务启动并在ZK注册成功
c.调用接口
命令:telnet Ip 端口
在这里插入图片描述
命令:ls 显示服务列表
命令:invoke 调用接口
在这里插入图片描述
补充:若接口参数为对象:

public String sayHi(UserDTO userDTO)
  • 1

则调用命令如下:

invoke  com.shi.service.UserService.sayHi({"id":"11","name":"888","class":"com.shi.UserDTO"}) 
  • 1

若接口参数为集合:

public String sayHi(List<UserDTO> userDTOList)
  • 1

则调用命令如下:

invoke com.shi.service.UserService.sayHi([{"id":"11","name":"888","class":"com.shi.UserDTO"}])
  • 1

欢迎大家积极留言交流学习心得,点赞的人最美丽,谢谢

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/424618
推荐阅读
相关标签
  

闽ICP备14008679号