如果zookeeper 版本在3.4.x。
使用com,alibaba,dubbo 2.5.x 升级至org.apache.dubbo 2.7.1
使用下列引用信息,生产者 与消费者 均相同
<!-- Dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.1</version>
</dependency>
<!-- SpringBoot 和 Dubbo 整合包 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.1</version>
</dependency>
<!-- curator和 zkClient 都是 ZooKeeper 的 Java 客户端 -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
<!-- ZooKeeper 由于日志冲突,排除日志-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
<!-- 排除这个 slf4j-log4j12 -->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
生产者配置信息 yml文件
server:
port: 8083
dubbo:
application:
name: dubboProvider
qos-port: 2222
protocol:
name: dubbo
registry:
address: zookeeper://127.0.0.1:2181
生产者service 使用注解@dubbo
@Service
public class ProviderServiceImpl implements ProviderService {
@Override
public String say(String message) {
return message + "dubbo调用成功";
}
}
然后在启动类上加伤 @EnabbleDubbo注解
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubbo
public class DubboDemoProviderOneApplication {
public static void main(String[] args) {
SpringApplication.run(DubboDemoProviderOneApplication.class, args);
}
}
项目结构如下
如上,一个简单的生产者调用信息就完成了,接下来就看消费者的配置信息
消费者配置信息 pom 文件,除了与生产者一样的pom外,需要加上需要调用的dubbo微服务jar内容
<!-- Dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.1</version>
</dependency>
<!-- SpringBoot 和 Dubbo 整合包 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.1</version>
</dependency>
<!-- curator和 zkClient 都是 ZooKeeper 的 Java 客户端 -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
<!-- ZooKeeper 由于日志冲突,排除日志-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
<!-- 排除这个 slf4j-log4j12 -->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>dubbo-demo-provider-one</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
消费者dubbo配置信息yml如下
server:
port: 8084
dubbo:
application:
name: dubboConsumer
qos-port: 2223
protocol:
name: dubbo
registry:
address: zookeeper://127.0.0.1:2181
spring:
main:
allow-bean-definition-overriding: true
消费者调用生产者接口,引入@Reference 注册暴露服务接口
@RestController
@RequestMapping(value = "api")
public class TestController {
@Reference
ProviderService providerService;
@RequestMapping(value = "test")
public String Test(){
String say = providerService.say("测试");
return say;
}
}
消费者与生产者一样,启动类需要增加@EnableDubo注解
@SpringBootApplication
@EnableDubbo
public class DubboDemoConsumerOneApplication {
public static void main(String[] args) {
SpringApplication.run(DubboDemoConsumerOneApplication.class, args);
}
}
消费者项目层级如下
此处以zookeeper 3.8.1为例
dubbo 使用3.2.2。zookeeper 使用 3.8.1
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
<version>3.2.2</version>
<type>pom</type>
</dependency>
</dependencies>
关于 生产者 消费者 启动类 需要加上@Enabledubbo注解信息,与 dubbo 2.7.x 相似,可以参考上面dubbo与zookeeper版本选型,
相对于 dubbo 2.7.x 版本来说,暴露服务注册注解,由@Reference 调整为@DubboReference。
@RestController
@RequestMapping(value = "api")
public class TestController {
@DubboReference
ProviderService providerService;
@RequestMapping(value = "test")
public String Test(){
String say = providerService.say("测试");
return say;
}
}