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 

 運行並且訪問:

大家可以多啟動幾個 發布服務端口 然后 玩玩 就集群效果 我就不做展示了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM