Dubbo
一、安装
1、下载注册中心zookeeper并运行(资源下载)
2、下载dubbo,确保已经配置好maven环境,到dubbo下载的目录下运行下载好的jar,java -jar …jar
二、在spring中的配置
3、使用xml配置的provider(服务提供者)
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!--1、指定当前服务的名字-->
<dubbo:application name="user-service-provider"></dubbo:application>
<!--2、指定注册中心的位置-->
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry>
<!--3、指定通讯的规则-->
<dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
<!--4、暴露指向服务的真正实现对象-->
<dubbo:service interface="com.myproject.service.UserService" ref="userService"></dubbo:service>
<!--5、服务的实现-->
<bean id="userService" class="com.myproject.service.impl.UserServiceImpl"></bean>
</beans>
5、使用xml配置的consumer(服务消费者/调用者)
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
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/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!--spring包扫描-->
<context:component-scan base-package="com.myproject"></context:component-scan>
<!--配置消费者/应用的名称-->
<dubbo:application name="gamll-service-consumer"/>
<!--配置注册中心的地址-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--配置调用服务方的接口的位置-->
<dubbo:reference id="userService" interface="com.myproject.service.UserService"/>
</beans>
6、通过上述provider以及consumer的配置就可以在不同项目中,实现对UserService接口的调用。
三、在SpringBoot中的配置文件application.properties中的配置
1、在provider中的配置
dubbo.application.name=user-provider
dubbo.registry.address=127.0.0.1:2181
dubbo.registry.protocol=zookeeper
dubbo.protocol.name=dubbo
dubbo.protocop.port=20880
dubbo.monitor.protocol=registry
#使用service注解暴露服务的实现
#使用EnableDubbo开启基于注解的dubbo配置
server.port=8001
2、在consumer中的配置
dubbo.application.name=user-consumer
dubbo.monitor.protocol=register
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181
server.port=8002
#使用Reference调用远程对象
3、在调用方使用Reference注解调用服务方的接口
4、服务方使用com.alibaba.dubbo.config.annotation.Service注解(注意不是spring中的Service注解)暴露服务接口
5、在SpringBoot框架中配置也可使用xml方式,将配置的xml文件导入到resources目录下,在项目启动类…Application下添加注解
@ImportResource(locations = "classpath:文件在类路径下的位置")
6、使用配置类进行配置
服务提供者
@Configuration
public class DubboConfig {
@Bean
public ApplicationConfig applicationConfig() {
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName("user-provider");
return applicationConfig;
}
@Bean
public RegistryConfig registryConfig() {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setProtocol("zookeeper");
registryConfig.setAddress("127.0.0.1:2181");
return registryConfig;
}
@Bean
public ProtocolConfig protocolConfig() {
ProtocolConfig protocolConfig = new ProtocolConfig();
protocolConfig.setName("dubbo");
protocolConfig.setPort(20880);
return protocolConfig;
}
@Bean
public ServiceConfig<UserService> userServiceServiceConfig(UserService userService) {
ServiceConfig<UserService> serviceConfig = new ServiceConfig<>();
//设置服务接口
serviceConfig.setInterface(UserService.class);
serviceConfig.setRef(userService);
//设置超时时间
serviceConfig.setTimeout(2000);
//设置版本号
serviceConfig.setVersion("1.0.0");
//指定方法
MethodConfig methodConfig = new MethodConfig();
methodConfig.setName("getUserInfo");
//方法设置超时时间
methodConfig.setTimeout(1000);
List<MethodConfig> list = new ArrayList<>();
list.add(methodConfig);
serviceConfig.setMethods(list);
return serviceConfig;
}
//另外也可以设置MonitorConfig,同样是将组件加入到容器中
}
服务消费者
@Configuration
public class DubboConfig {
@Bean
public ApplicationConfig applicationConfig() {
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName("user-consumer");
return applicationConfig;
}
@Bean
public RegistryConfig registryConfig() {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setProtocol("zookeeper");
registryConfig.setAddress("127.0.0.1:2181");
return registryConfig;
}
}