springboot-19-整合dubbox


springboot 整合dubbox 

1, 沒了,,,

2, 安裝zookeeper

可見: http://www.cnblogs.com/wenbronk/p/6636926.html

2.1 下載: 

wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.8/

解壓: 

tar -zxf zookeeper-3.4.8.tar.gz

修改配置文件: 

  cd zookeeper-3.4.8/conf

  cp zoo_sample.cfg zoo.cfg # zookeeper 默認是用../conf/zoo.cfg 如果沒有這個文件則報錯

  vim zoo.cfg

其他, 能啟動就行吧

  cd zookeeper-3.4.8/bin

  ./start.sh start #啟動zookeeper 關閉: ./start.sh stop

我的zookeeper是安裝在docker上的, 安裝方式可見: http://www.cnblogs.com/wenbronk/p/6438492.html

3, maven工程

|--dubbo-prent                   父工程(pom)
|
|_____dubbo-cosumer              消費者(war)  
|
|_____duboo-provide              生產者(pom)
    |
    |
_____interface 消費者和生產者都依賴這個, 一個接口, 實現rpc(jar)
    |
    |_____service        實際的rpc調用的方法(war)

 其中interface 被 dubbo-consumer和service所依賴

4, parent 

parent主要用來統一管理使用的, 在其pom中進行jar包的統一依賴管理

pom.xml配置: 

<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>com.wenbronk</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>1.5.2.RELEASE</version>
    </parent>

    <properties>
        <spring-boot.version>1.5.2.RELEASE</spring-boot.version>
        <java.version>1.8</java.version>
        <fastjson.version>1.2.21</fastjson.version>
        <dubbo-spring-boot>1.0.0</dubbo-spring-boot>
    </properties>

    <dependencyManagement>
        <dependencies>

            <!-- Spring Boot Dubbo 依賴 -->
            <dependency>
                <groupId>io.dubbo.springboot</groupId>
                <artifactId>spring-boot-starter-dubbo</artifactId>
                <version>${dubbo-spring-boot}</version>
            </dependency>

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${fastjson.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>
  
  
</project>

5, dubbo-provide, 這兒沒什么用, 管理生產者和接口, 實際中還可以用來依賴統一的工具包等

pom.xml中沒啥東西

<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>
  <parent>
    <groupId>com.wenbronk</groupId>
    <artifactId>dubbo-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>dubbo-provide</artifactId>
  <packaging>pom</packaging>
  <modules>
      <module>dubbo-provide-service</module>
      <module>dubbo-provide-interface</module>
  </modules>
</project>

6, interface: 

用來rpc調用的接口, 只有一個類: 

TestService.java

package com.wenbronk.dubbo.service;

public interface TestService {
    
    public String test();
}

7, service

服務的生產者: 

 

pom.xml中用來依賴包

<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>
  <parent>
    <groupId>com.wenbronk</groupId>
    <artifactId>dubbo-provide</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>dubbo-provide-service</artifactId>
  <packaging>war</packaging>
  
  <dependencies>
        <!-- exclude掉spring-boot的默認log配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!-- spring-boot的web啟動的jar包 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 為了構建一個即是可執行的,又能部署到一個外部容器的war文件,你需要標記內嵌容器依賴為"provided" -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
        </dependency>

        <!-- Spring Boot Test 依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.wenbronk</groupId>
            <artifactId>dubbo-provide-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
  </dependencies>

    <build>
        <plugins>
            <!-- main方法運行需要 -->
            <!-- 加入熱部署插件, spring-boot:run可用 -->
            <!-- java可用, 需要下載jar包放在lib下, 然后修改vm參數 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin </artifactId>
                <dependencies>
                    <!--springloaded hot deploy -->
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>springloaded</artifactId>
                        <version>1.2.6.RELEASE</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        <configuration>
                            <classifier>exec</classifier>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
  
</project>

發布dubbo服務, 在application.properties中加入以下配置: 

server.port=8081

# Dubbo 消費者
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://192.168.50.202:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.wenbronk.dubbo

注意配置 scan的掃描路徑

App.java

package com.wenbronk.dubbo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {

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

 TestServiceImpl.java

package com.wenbronk.dubbo.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.wenbronk.dubbo.service.TestService;

@Service(version="1.0.0")
public class TestServiceImpl implements TestService {

    @Override
    public String test() {
        System.out.println("success");
        return "finally, i am coming";
    }
    
}

 

 8, 最后, 是cosumer

pom.xml中配置, 同service中一樣, 

application.properties

## 避免和 server 工程端口沖突
server.port=8080

## Dubbo 服務消費者配置
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://192.168.50.202:2181
spring.dubbo.scan=com.wenbronk.dubbo

App.java 同service一樣

TestController.java

package com.wenbronk.dubbo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.wenbronk.dubbo.service.TestService;

@RestController
public class TestController {

    @Reference(version="1.0.0")
    private TestService testService;
    
    @RequestMapping("/abc")
    public String test() {
        System.out.println("controller.sucess");
        testService.test();
        return "success";
    }
    
}

 

 最初因為說dubbo-start不支持新的spring了, 所以下載了當當的dubbox自己編譯, 后來發現, 還是可以用的

附: dubbox編譯

dubbo, 阿里不維護了, 當當繼續開源: 因為沒有發布在倉庫, 所以自己編譯

git clone https://git.oschina.net/smarti/spring-boot-mybatis-sample.git

然后跳過test進行編譯, 可以發布在本地倉庫中

mvn install -Dmaven.test.skip=true

 

 

聽說用注解的話, 不支持事物, 還沒遇到, 遇到在更新


免責聲明!

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



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