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
THE END
分享
二维码
< <上一篇
下一篇>>