前言: 2023-12-26 19:38:05 最近學習分散式技術:Dubbo+zookeeper,準備寫一個demo用springboot整合dubbo和zookeeper。但是看了網上一些教程都是幾年前的,試著跟著寫了幾個demo沒一個跑起來,基本是maven依賴方面的問題。 版本信息: spr ...
前言:
2023-12-26 19:38:05
最近學習分散式技術:Dubbo+zookeeper,準備寫一個demo用springboot整合dubbo和zookeeper。但是看了網上一些教程都是幾年前的,試著跟著寫了幾個demo沒一個跑起來,基本是maven依賴方面的問題。
版本信息:
springboot:2.7.6
Dubbo:2.7.3
zookeeper:3.8.0
jdk:1.8
idea:2021.3.2
Maven坐標:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</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>2.7.3</version>
</dependency>
<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>2.12.0</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.14</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
Demo項目:
項目準備:
1、點擊創建一個springboot項目
2、勾選web和lombok
3、創建
4、修改IDEA的Maven配置
5、刷新Maven
6、運行測試
7、修改pom配置文件
8、刷新maven
項目結構:
src:
├─main
│ ├─java
│ │ └─com
│ │ └─example
│ │ └─dubbo
│ │ │ DubboApplication.java
│ │ │ TimeService.java
│ │ │
│ │ ├─consumer
│ │ │ │ ConsumerApplication.java
│ │ │ │
│ │ │ └─controller
│ │ │ indexController.java
│ │ │
│ │ └─provider
│ │ │ ProviderApplication.java
│ │ │
│ │ └─impl
│ │ TimeServiceImpl.java
│ │
│ └─resources
│ │ application-consumer.properties
│ │ application-provider.properties
│ │ application.properties
│ │
│ ├─static
│ └─templates
生產者:
ProviderApplication.java
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubbo
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class,args);
}
}
TimeServiceImpl.java
import com.example.dubbo.TimeService;
import org.apache.dubbo.config.annotation.Service;
@Service //註意引入的是dubbo包下的Service
public class TimeServiceImpl implements TimeService {
@Override
public String getTime() {
System.out.println("provider被調用啦!");
return "Hello,Dubbo!";
}
}
註意要將ProviderApplication.java的運行配置文件改為provider!
application-provider.properties
server.port=8082
dubbo.application.name=provider-app
消費者:
ConsumerApplication.java
import com.example.dubbo.TimeService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.format.DateTimeFormatter;
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class,args);
}
}
indexController.java
import com.example.dubbo.TimeService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class indexController {
@Reference//Duboo包下的
private TimeService timeService;
@GetMapping("/")
public String getTime(){
System.out.println("consumer被調用啦!");
return timeService.getTime();
}
}
註意要將ConsumerApplication.java的運行配置文件改為consumer!
application-consumer.properties:
server.port=8081
dubbo.application.name=consumer-app
公共類:
TimeService.java:
public interface TimeService {
String getTime();
}
公共配置:
application.properties:
# 換成你自己zookeeper服務的地址
dubbo.registry.address=zookeeper://localhost:2181
啟動:
依次啟動zookeeper、ProviderApplication.java、ConsumerApplication.java
項目地址:
百度網盤:https://pan.baidu.com/s/1dyxzUGJaiQUF0ibXGKBITA
提取碼:ex2s
gitee:https://gitee.com/qinglianguzhou/dbuuo-demo.git
本文來自博客園,作者:Lollipop_pro,轉載請註明原文鏈接:https://www.cnblogs.com/CooperCode/p/17929281.html