zoukankan      html  css  js  c++  java
  • SpringBoot2.0之整合Dubbo

    Dubbo支持协议

     Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。

    Spring Cloud 项目feign客户端 继承依赖方式实现重构项目

    jar: 打成jar包

    pom:依赖被被人继承的 公共依赖 字符模块

    war:达成一个web项目 里面包含jar包、WEB-INF

    toov5-dubbo-parent        pom

            toov5-public-api-service        pom    提供会员接口  jar类型   pom项目没有Java代码的哦

            toov5-api-member-service 

            toov5-api-member-service-impl  会员接口实现类(这个不是公开的) (点击parent创建的,需要引入 实现的interface )

       toov5-dubbo-order-web   jar(springboot)     订单项目 调用会员项目   ps:订单调用会员时候 引入公共接口  底层调用dubbo协议 帮助实现  *(dubbo原理  拿到类的class的地址信息,反射。)

    parent引入共同依赖:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>toov5-dubbo-parent  </groupId>
      <artifactId>dubbo-parent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>
      
      <parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.0.1.RELEASE</version>
    	</parent>
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    		<java.version>1.8</java.version>
    		<curator-framework.version>4.0.1</curator-framework.version>
    		<zookeeper.version>3.4.13</zookeeper.version>
    		<dubbo.starter.version>0.2.0</dubbo.starter.version>
    	</properties>
    
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>com.alibaba.boot</groupId>
    			<artifactId>dubbo-spring-boot-starter</artifactId>
    			<version>${dubbo.starter.version}</version>
    		</dependency>
    
    		<!-- <dependency 在上面已经实现好了>
    			<groupId>org.apache.curator</groupId>
    			<artifactId>curator-framework</artifactId>
    			<version>${curator-framework.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.zookeeper</groupId>
    			<artifactId>zookeeper</artifactId>
    			<version>${zookeeper.version}</version>
    		</dependency>
    
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency> -->
    	</dependencies>
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    		</plugins>
    	</build>
      
    	<modules>
    		<module>toov5-api-member-service-impl</module>
    		<module>toov5-public-api-service</module>
    	</modules>
    </project>  

    点击parent 创建 maven pom   :toov5-public-api-service (公共接口maven model)    点击 toov5-public-api-service  创建   toov5-api-member-service    jar  (写接口 interface) 

    点击parent 创建 maven jar :  toov5-api-member-service-impl   并且 引入: toov5-api-member-service 的依赖 dependency

    接口: 

    package com.toov.api.member.service;
    
    public interface MemberService {
       
        public String getUser();
        
    }

    实现类:

    package com.toov.api.member.service.impl;
    
    import com.alibaba.dubbo.config.annotation.Service;
    import com.toov.api.member.service.MemberService;
    
    @Service
    public class MemberServiceImpl implements MemberService {
    
        public String getUser() {
            System.out.println("订单服务调用会员服务");
            return "订单服务调用会员服务成功";
        }
          
    }

    启动类:

    package com.toov.api.member.service.impl;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
    
    @EnableDubbo
    @SpringBootApplication
    public class App {
      public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
    }

    yml:

    server:
      port: 8080
    dubbo:
      application:
        name: member
        #表示采用的dubbo协议
      protocol:
        name: dubbo
        #发布的端口号
        port: 20880 
      registry:
        address: zookeeper://192.168.91.5:2181
    
     
    

      

    PS:如果需要写版本号的 springboot没有帮你整合  如果不需要写版本号  已经帮忙整合了

    Dubbo发布时候 采用注解方式! 使用 @Service注解 进行发布服务

    记得采用 Dubbo 而不是 spring 的注解!

    区别:  spring 提供的 是注入到Spring容器中 dubbo是注册到注册中心去!

    扫的实现类 注册到dubbo 注册中心中去

    启动效果:

     点击parent 创建 toov5-dubbo-order-web  jar   然后引入接口依赖!

    package toov5.order.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.alibaba.dubbo.config.annotation.Reference;
    import com.toov.api.member.service.MemberService;
    
    @RestController
    public class OrderController {
        @Reference  //dubbo提供的  而不是@Autowired
        private MemberService memberService;
        @RequestMapping("/orde")
        public String orderToMember() {
            return memberService.getUser();
            
        }
        
    }

    启动类:

    package toov5.order.controller;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
    @EnableDubbo
    @SpringBootApplication
    public class AppOrder {
      public static void main(String[] args) {
        SpringApplication.run(AppOrder.class, args);
    }
    }
     

    yml

    server:
      port: 8082    #tomcat端口号
    ###dubbo 注册服务名称
    dubbo:
      application:
        name: order
      registry:
        address: zookeeper://192.168.91.5:2181
      consumer:  #调用服务的超时时间
        timeout: 5000 

     运行并且访问:

    大家可以多启动几个 发布服务端口 然后 玩玩 就集群效果 我就不做展示了

  • 相关阅读:
    php类型运算符
    今天我开始写自己的东西
    挑选简历
    SQL Server和Oracle数据库索引介绍
    排序算法分析与设计实验
    软件框架 转
    【转】Ajax的原理和应用
    Web Service
    [转]异地分布式敏捷软件开发(Distributed Agile Software Development)
    [转]如何有效的使用C#读取文件
  • 原文地址:https://www.cnblogs.com/toov5/p/9929639.html
Copyright © 2011-2022 走看看