代码示例
两个模块用同样的Maven依赖,也可以把依赖放到父工程里,免得写两次
<!--导入SpringBoot集成 dubbo + zookeeper的依赖-->
<!--dubbo-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.14</version>
</dependency>
<!--zkClient,要选com.github.sgroschupf下的-->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<!--zookeeper-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.6.3</version>
<!--slf4j会冲突-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
代码示例
Consumer
src/main/java/com/example/service/AService.java
public interface AService {
public String getInfo();
}
src/main/resources/application.properties
server.port=8092
# 消费者去哪里拿服务
# 服务名称
dubbo.application.name=consumer
# 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:12181
# 哪些服务需要被注册
dubbo.scan.base-packages=com.example.service
dubbo.protocol.port=20882
src/test/java/com/example/TestDemo.java
import com.example.service.AService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class TestDemo {
@DubboReference
AService aService;
@Test
void test(){
System.out.println(aService.getInfo());
}
}
Provider
src/main/java/com/example/service/AService.java
public interface AService {
public String getInfo();
}
src/main/java/com/example/service/impl/AServiceImpl.java
import com.example.service.AService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;
@Service
@DubboService
public class AServiceImpl implements AService {
@Override
public String getInfo() {
return "这是Provider的实现类提供的方法";
}
}
src/main/resources/application.properties
server.port=8091
# 服务名称
dubbo.application.name=provider
# 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:12181
# 哪些服务需要被注册
dubbo.scan.base-packages=com.example.service
dubbo.protocol.port=20881
src/main/java/com/example/Main.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
测试
测试时需要打开Zookeeper,启动Provider程序
Consumer直接使用 单元测试
进行远程调用就好