dubbo在spring中的配置集成
dubbo在spring或springBoot中的多种配置与使用说明
一、安装注册中心
1、下载注册中心zookeeper,安装方式随意,本站提供docker方式安装
2、安装dubbo-admin ,dubbo服务客户端检测工具【可选】,下载的jar启动方式: java -jar …jar
二、在spring中的配置
1、使用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>
2、使用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>
3、通过上述provider以及consumer的配置就可以在不同项目中,实现对UserService接口的调用。
三、在SpringBoot中的配置文件application.properties中的配置
1、在provider中的配置
properties
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
Yml
spring:
application:
name: user-provider
server:
port: 6080
dubbo:
application:
name: user-provider
protocol:
name: dubbo
port: 20880
provider:
timeout: 1000
version: dev2.0
monitor:
protocol: registry
registry:
address: zookeeper://127.0.0.1:8848
# address: zookeeper://IP1:2181?backup=IP2:2181,IP3:2181
2、在consumer中的配置
properties
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调用远程对象
YML
spring:
application:
name: user-consumer
server:
port: 6085
dubbo:
application:
name: user-consumer
protocol:
name: dubbo
port: 20880
consumer:
timeout: 1000
version: dev2.0
monitor:
protocol: registry
registry:
address: zookeeper://127.0.0.1:2181
# address: nacos://127.0.0.1:8848
3、在调用方使用Reference注解调用服务方的接口
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.annotation.Service;
@Service
public class OrderServiceImpl implements OrderService{
@Reference(check = true)
UserService userService;
@Override
public void initOrder(String userId){
//获取用户信息
List<User> userInfo = userService.getUserInfo(userId);
}
}
服务方使用org.alibaba.dubbo.config.annotation.Service注解(注意不是spring中的Service注解)暴露服务接口;
经过以上对springBoot配置后,最后一步,在生产与消费者启动类增加以下注解
@EnableDubbo//使用这个注解来开启dubbo服务
其他方式配置:
4、在SpringBoot框架中配置也可使用xml方式,将配置的xml文件导入到resources目录下,在项目启动类…Application下添加注解
@ImportResource(locations = "classpath:文件在类路径下的位置")
5、使用配置类进行配置
服务提供者
@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;
}
}
1、所有文章未经授权禁止转载、摘编、复制或建立镜像,如有违反,追究法律责任。
2、本站文章部分来源注册用户发布或互联网收集而来,若有侵权,请邮件联系作者。
邮箱地址:wtao219@qq.com
2、本站文章部分来源注册用户发布或互联网收集而来,若有侵权,请邮件联系作者。
邮箱地址:wtao219@qq.com
THE END
二维码