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 注册中心中去

 

启动效果:

SpringBoot2.0之整合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提供的  [email protected] 
    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 

 运行并且访问:

SpringBoot2.0之整合Dubbo详解编程语言

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

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/16140.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论