用springboot整合dubbo,zookeeper的简易demo,先记录下。
注册到消费要一个项目,三个模块
模块1:API 公共接口
模块2:提供者
模块3:消费者
提供者引用api公共接口的依赖,通过dubbo向zk注册服务。
提供者注意 : @Service ,@EnableDubbo
**
项目结构
新建springboot-dubbo项目,创建公共接口,服务提供者俩模块。**
common-api模块如下:
common-api结构
common-api的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.springboot-dubbo</groupId>
<artifactId>common-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>common-api</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
CommonAPI代码:
package com.springbootdubboapi;
/**
* Created by L.
*/
public interface CommonAPI {
String writeUrName(String name);
String hello(String word);
}
接下来提供者模块:
提供者模块结构:
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.springboot-dubbo</groupId>
<artifactId>springboot-dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-dubbo-provider</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.springboot-dubbo</groupId>
<artifactId>common-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>maven-ali</id>
<url>http://maven.aliyun.com/nexus/content/groups/public//</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
</project>
application.yml:
server:
port: 9999
dubbo:
application:
name: dubbo-provider-luf-5.11
registry:
address: 自己的zk地址:2181
protocol: zookeeper
check: false
protocol:
name: dubbo
port: 33333
monitor:
protocol: register
consumer:
check: false
timeout: 3000
ProviderService代码:
package com.springbootdubboprovider.service;
import com.alibaba.dubbo.config.annotation.Service;
import com.springbootdubboapi.CommonAPI;
import org.springframework.stereotype.Component;
/**
* Created by L.
* 注意@Service一定要用dubbo下的Service!
*/
@Service
@Component
public class ProviderService implements CommonAPI{
String person = "ZHANG SAN ";
@Override
public String writeUrName(String name) {
return person+" . "+name;
}
@Override
public String hello(String word) {
return person + " . " +word;
}
}
启动类SpringbootDubboProviderApplication代码:
package com.springbootdubboprovider;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubbo
public class SpringbootDubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDubboProviderApplication.class, args);
}
}
启动之后,可以登录dubbo-admin查看注册的服务,可以看到详细的服务信息
也可以在zookeeper中查看注册的服务:
可能出现的问题:
无法引用commonAPI公共接口的依赖,试着clean,install,清理缓存重启,刷新pom.xml
启动时zk要先启动着
一定要注意依赖的版本问题!
多clean clean,多 install install,多刷新刷新pom.xml
后面有遇到的 想到的问题再补充补充