需要的工具:
链接: https://pan.baidu.com/s/1Mwv-vI2Tp73A1eAN4xNo-w
密码:rj1i
配置zookeeper,百度下,内容主要是配置data和log的输出路径以及zookeeper的路径。
dubbo-admin.war,放在本地启动的tomcat的webapp下,直接启动。这边dubbo-admin是需要jdk1.7才能正常启动,否则会报错,报错原因是dubbo-admin中引入的spring的版本太低。可以百度下怎么解决。个人原本是1.8的环境后来配置了1.7的环境,不过使用idea能随意切换本机拥有的jdk,所以下面的代码也是直接用1.8启动,电脑的环境变量是1.7。
dubbo-admin登录问题:
在web-inf下的dubbo.properties文件配置账户密码,以及zookeeper的地址:
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
坑人的是这边其实是两个账户,一个是root,密码是root;一个是guest,密码是guest。而且我这边只能用guest登录。dubbo-admin的作用是能看见生成者和消费者。其实数量少的话,在zookeeper中就能看见,不想配置的同学可以不启动dubbo-admin。
下面是介绍生产者的流程:
idea新建一个Springboot的web项目。
然后在引入dubbo相关的jar包。
<dependency> <groupId>io.dubbo.springboot</groupId> <artifactId>spring-boot-starter-dubbo</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.6</version> </dependency>
配置application.properties.
## Dubbo 服务提供者配置 spring.dubbo.application.name=springbootProvider #服务的命名 spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 #在本地的端口为2181的zookeeper上进行注册 spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=20880 #服务的端口号 spring.dubbo.scan=com.example.demo.service #这边是需要扫描的包
创建需要所谓服务的接口service以及实体类 impl。
sevice:
public interface DubboTest { public String test(); }
impl:
@Service public class DubboTestImpl implements DubboTest{ @Override public String test() { return "123"; } }
创建实体类impl后,添加service标签,这个service表示是dubbo引入的,不是springMVC的标签,具体为:
import com.alibaba.dubbo.config.annotation.Service;创建完之后的目录结构:
到这边,项目的配置已经结束。启动springboot项目,在zookeeper中注册提供服务的生产者。
我在这边遇到的坑,十分重要:
1.springboot启动的端口不能冲突,很容易和启动dubbo-admin的tomcat产生8080(默认)冲突,这边改下springboot的端口;
2.服务端口冲突,就是生产者dubb个人的端口也会和当前电脑中的其他服务的端口差生冲突;
3.springboot继承父类的版本太高,导致springboot在启动后,一直报找不到log4j的日志报,这边我之前引入的这个包,但是没有什么用处,可能和springboot自带的日志logback冲突。冲突的父类引用:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
解决的办法是将maven引入的springboot手动改低版本。改动后:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
这边引入的父类版本 还是注意下,我个人引入的是1.5.0(这个版本肯定试用),最好是1.5.+版本以上,少于2.0。之前遇见过低版本的忘记产生了什么问题,也麻烦了我本人好久的时间。
再次启动,在zookeeper中可以看见启动的结果:
项目下载的地址,码云:https://gitee.com/zwfazt/springboot_dubbo.git