Springboot整合Dubbo和zookeeper
遇到最多的问题就是jar包冲突,总结出两种版本解决方法,希望有所帮助
1、配置提供者(provider)
1导入依赖
1.1导入依赖[ zookeeper3.4.6整合jar包(对应服务器版本) ]
<!--dubbo依赖-->
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.6</version>
</dependency>
<!--zookeeper客户端依赖-->
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<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>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<!--排除这个slf4j-log4j12-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
1.2导入依赖[ zookeeper3.5.+整合jar包(对应服务器版本) ]
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
2.配置yml
这块用的是springboot项目所以去配置application.yml
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/***?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.NonRegisteringDriver
type: com.alibaba.druid.pool.DruidDataSource
#配置日志
mybatis-plus:
global-config:
db-config:
logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath*:/xml/*.xml
dubbo:
application:
name: service ## 应用名 对应你的项目名
registry:
address: 127.0.0.1:2181 ##这块填写你服务器的ip地址
protocol: zookeeper
monitor:
protocol: registry
protocol:
name: dubbo
port: 20880
server:
port: 9092
3.暴露服务
用boot项目的话,那就使用注解@service
注意:这块千万@service不要导入springframework下的类
**这块它继承的是GoodService ** 后面消费者要用到
4.启动类下开启@EnableDubbo 支持
重点:这块一定要开启@EnableDubbo
5.有可能会报找不到mapper的方法,这块在启动类上加如下
@MapperScan("com.***.mapper")
2、配置消费者(consumer)
2.1导入依赖(同提供者)
2.2配置yml
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/***?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.NonRegisteringDriver
type: com.alibaba.druid.pool.DruidDataSource
#配置日志
mybatis-plus:
global-config:
db-config:
logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath*:/xml/*.xml
dubbo:
application:
name: controller_web ## 应用名 对应你的项目名
registry:
address: 127.0.0.1:2181 ##这块填写你服务器的ip地址
protocol: zookeeper
monitor:
protocol: registry
server:
port: 9093 ##
2.3 引用服务
这块还是使用注解@Reference
2.4 启动类下开启@EnableDubbo 支持
同上
3.编写web层测试方法
这块先要启动提供者在启动消费者
这块略