前言
Springboot 整合dubbo,对版本要求非常的高。下面是我的设计版本,远程使用zookeeper为3.6.2。
生产者:
我单独设计一个模块,作为Rpc远程调用接口,如下图:
使用jar(很重要)
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.13</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<dependency>
<artifactId>af-rpc</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
package com.authority.api.service.impl;
import com.authority.rpc.service.TestDubbo;
import org.apache.dubbo.config.annotation.Service;
/**
* dubbo实现类
*
* @author
*/
@Service(version = "1.0.0", interfaceClass = TestDubbo.class)
public class TestDubboImpl implements TestDubbo {
@Override
public Integer getNumber() {
return 1;
}
}
实现类为另一个模块
package com.authority.api.service.impl;
import com.authority.rpc.service.TestDubbo;
import org.apache.dubbo.config.annotation.Service;
/**
* dubbo实现类
*
* @author
*/
@Service(version = "1.0.0", interfaceClass = TestDubbo.class)
public class TestDubboImpl implements TestDubbo {
@Override
public Integer getNumber() {
return 1;
}
}
这样生产者就结束了。这边没有采用xml 形式进行服务注册,直接使用jar包,如上图af-rpc.jar.。放在消费者使用。
消费者
jar使用
我这边使用IDEA jar导入方法为,File->Project Structure->找到具体使用模块-> 点击最右边加号->JARS or directories(选择路径)->勾选->apply,ok 这样就完成jar包导入
下面直接使用如下:
jar包
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.13</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<!-- 出现问题 Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NoSuchMethodError -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>25.1-jre</version>
</dependency>
<!--解决不打印dubbo日志问题-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</dependency>
import org.apache.dubbo.config.annotation.Reference;
@Reference(version = "1.0.0")
private TestDubbo testDubbo;
@ApiOperation(value = "测试权限")
@GetMapping("/testDubbo")
public Integer testDubbo(){
return testDubbo.getNumber();
}
自此就完成配置,注意版本要求非常高。