栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Dubbo实战

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Dubbo实战

专栏目录:*
Dubbo基础: https://blog.csdn.net/qq_38310244/article/details/125891802
Dubbo实战: https://blog.csdn.net/qq_38310244/article/details/125892120
手写一套简单的dubbo(含注册中心)之编程思想: https://blog.csdn.net/qq_38310244/article/details/125892641
手写一套简单的dubbo(含注册中心)之核心代码: https://blog.csdn.net/qq_38310244/article/details/125892849

上一篇:Dubbo基础已经介绍了Dubbo的一些理论知识,现在开始代码实战。

代码实现

定义一个公共接口的模块dubbo-api

User类

package com.mywork.dubboapi.bean;

import lombok.Data;

import java.io.Serializable;


@Data
public class User implements Serializable {

    private Integer id;
    private String name;
}

公共接口UserService类,相当于服务提供者和服务消费者之间的桥梁

package com.mywork.dubboapi.service;

import com.mywork.dubboapi.bean.User;


public interface UserService {

    User getUser();
}

基于Springboot注解配置实现 服务提供者

pom.xml文件引用主要依赖


        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.1.0
        
        
        
            com.101tec
            zkclient
            0.10
        

        
        
            com.mywork
            dubbo-api
            0.0.1-SNAPSHOT
        

定义dubbo的配置信息,DubboConfiguration类

package com.mywork.dubboprovider.config;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class DubboConfiguration {

    
    @Bean
    public ApplicationConfig applicationConfig(){
        return new ApplicationConfig("mywork-provider");
    }

    
    @Bean
    public RegistryConfig registryConfig(){
        return new RegistryConfig("zookeeper://127.0.0.1:2181");
    }

    
    @Bean
    public ProtocolConfig protocolConfig(){
        return new ProtocolConfig("dubbo",20888);
    }
}

实现公共接口

package com.mywork.dubboprovider.serviceImpl;

import com.alibaba.dubbo.config.annotation.Service;
import com.mywork.dubboapi.bean.User;
import com.mywork.dubboapi.service.UserService;


/
@Configuration
public class DubboConfiguration {

    
    @Bean
    public ApplicationConfig applicationConfig(){
        return new ApplicationConfig("mywork-consumer");
    }

    
    @Bean
    public ConsumerConfig consumerConfig(){
        ConsumerConfig consumerConfig = new ConsumerConfig();
        consumerConfig.setTimeout(3000);
        return consumerConfig;
    }

    
    @Bean
    public RegistryConfig registryConfig(){
        return new RegistryConfig("zookeeper://127.0.0.1:2181");
    }
}

引用代理类实现业务

package com.mywork.dubboconsumer.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.mywork.dubboapi.bean.User;
import com.mywork.dubboapi.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("/user")
public class UserController {

    @Reference
    private UserService userService;

    @GetMapping("/getUser")
    public User getUser(){
        return userService.getUser();
   
}

启动类添加dubbo注解

package com.mywork.dubboconsumer;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
@EnableDubbo //开启dubbo
public class DubboConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboConsumerApplication.class, args);
    }

}

测试

启动zookeeper,启动服务提供者,启动服务消费者

管理界面查看

dubbo-admin管理界面:

可以看到我们的服务已经在注册中心进行了发布和订阅

接口测试

调用成功

基于Springboot配置文件实现 服务提供者

pom.xml核心依赖

 
        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.1.0
        
        
        
            com.101tec
            zkclient
            0.10
        

        
        
            com.mywork
            dubbo-api
            0.0.1-SNAPSHOT
        

在resource目录下新建dubbo-provider.xml配置文件进行dubbo信息的配置




    
    

    
    

    
    

    
    
    
    


定义公共接口的实现

package com.mywork.dubbofileprovider.serverImpl;

import com.mywork.dubboapi.bean.User;
import com.mywork.dubboapi.service.UserService;
import org.springframework.stereotype.Service;


@Service("userServer")
public class UserServiceImpl implements UserService {
    @Override
    public User getUser() {
        User user = new User();
        user.setId(1);
        user.setName("基于【配置】文件");
        return user;
    }
}

启动类引入dubbo依赖

package com.mywork.dubbofileprovider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication
@ImportResource("classpath:dubbo-provider.xml") //引入dubbo的配置
public class DubboFileProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboFileProviderApplication.class, args);
    }

}

至此,完成服务提供者的开发。

服务消费者

pom.xml核心依赖


        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.1.0
        
        
        
            com.101tec
            zkclient
            0.10
        
        
        
            com.alibaba
            fastjson
            1.2.47
        
        
        
            com.mywork
            dubbo-api
            0.0.1-SNAPSHOT
        

在resource下新建dubbo-consumer.xml进行dubbo信息的配置



    
    
    
    
    
    
    



引用公共接口实现业务

package com.mywork.dubbofileconsumer.controller;

import com.mywork.dubboapi.bean.User;
import com.mywork.dubboapi.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;


@RestController
@RequestMapping("/user")
public class UserController {

    
    @Resource
    private UserService userService;

    @GetMapping("/getUser")
    public User getUser(){
        return userService.getUser();
    }
}

启动类引入dubbo配置

package com.mywork.dubbofileconsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication
@ImportResource("classpath:dubbo-consumer.xml")
public class DubboFileConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboFileConsumerApplication.class, args);
    }

}

至此,完成服务消费者的开发

测试

启动zookeeper,启动服务提供者,启动服务消费者

管理界面查看

dubbo-admin管理界面:

可以看到我们的服务已经在注册中心进行了发布和订阅

接口测试

调用成功

基于jdk的配置文件实现 服务消费者

为了方便引入jar和对jar包的管理,这里使用Maven来管理依赖

pom.xml核心依赖

 
        
            com.alibaba
            fastjson
            1.2.47
        

        
        
            org.springframework
            spring-context
            5.3.5
        

        
        
            com.mywork
            dubbo-api
            0.0.1-SNAPSHOT
        

        
        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.1.0
        
        
        
            com.101tec
            zkclient
            0.10
        

在resource下新建dubbo-consumer.xml进行dubbo信息的配置



    
    
    
    
    
    
    



主方法调用服务提供者接口

package com.mywork;

import com.alibaba.fastjson.JSON;
import com.mywork.dubboapi.bean.User;
import com.mywork.dubboapi.service.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class Main {

    public static void main(String[] args) {
        //获取配置文件
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml");
        //装载配置文件
        context.start();
        System.out.println("consumer start");
        //从配置文件中获取到bean
        UserService userService = context.getBean(UserService.class);
        //调用服务生产者的代理的接口
        User user = userService.getUser();
        System.out.println("执行结果===>" + JSON.toJSONString(user));
    }
}

测试

启动zookeeper,启动服务提供者,启动主方法

调用结果:


下一篇:手写一套简单的dubbo(含注册中心)之编程思想

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020689.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号