您的位置:首页 > 编程语言 > Java开发

springboot整合dubbo

2018-03-01 00:09 609 查看
这里只是简单的整合,先要下载zookeeper,附上链接http://zookeeper.apache.org/releases.html
下载后就能打开zkServer.cmd(window版本,linux是zkServer.sh)





然后再java端建三个项目,也就是服务提供者provider,服务消费者consumer,还有一个接口(个人理解:就是把本来service层拆出来做服务集群,可让服务承载量上去,也可以跨系统进行通信,无需转化json,只需返回对象,也就扯到rpc原理,这样还可以保证服务实现不可见,安全,分布式架构更清晰!)
第一步:建第一个项目 接口层(类似本来的service层)



package com.java.One;

public interface DubboService {

public String dubboTest();
}第二步:新建第二个项目服务提供者provider(类似之前的serviceimpl)
导入依赖 <dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.3</version>
<exclusions>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.0.0</version>
        </dependency>
如果有spring-boot-devtools这个包,记得不要用,然后导入之前的接口包




package com.java.two;

import com.alibaba.dubbo.config.annotation.Service;
import com.java.One.DubboService;

@Service
public class DubboServiceImpl implements DubboService{

@Override
public String dubboTest() {
return "great,you can do it";
}

}建springboot结构的前面文章有,翻下,谢谢!
再application.properties文件添加dubbo注册服务参数#应用名称,消费者还是提供方
spring.dubbo.application.name=provider
#zk注册中心的地址,如果是多个,用"," 分开
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#协议类型
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
#dubbo的扫描包,具体是自己引用dubbo的那个bean的位置
spring.dubbo.scan=com.java.two第三步:最后的消费者consumer(类似controller)
这个项目导入的依赖和服务提供者provider一样



package com.java.Olym.explore.controller;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.alibaba.dubbo.config.annotation.Reference;
import com.java.One.DubboService;

@Controller
@RequestMapping("dubbo")
public class DubboController {
private final Logger log = Logger.getLogger(this.getClass());
@Reference//dubbo注入方式
private DubboService dubboService;

@RequestMapping("train")
public String train(){
log.info(dubboService.dubboTest());
return "yes";
}
}
还有application.properties文件#dubbo配置
#应用名称,消费者还是提供方
spring.dubbo.application.name=consumer
#zk注册中心的地址,如果是多个,用"," 分开
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo的扫描包,具体是自己引用dubbo的那个bean的位置
spring.dubbo.scan=com.java.Olym.explore.controller还有页面的测试代码,这个页面是在consumer工程类(由远程服务调用者去调用服务提供者,zk起注册中心,集群等作用)<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String ctx = request.getContextPath();
String url = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + ctx;
%>
<html>
<head>
<script>
function dubbo(){
location.href = "<%=ctx%>/dubbo/train";
}
</script>
</head>
<body>
<h1>Hello World!</h1>
<div id="dubbo">
<input type="button" value="dubboButton" onclick="dubbo();">
</div>
</body>
</html>至此,配置完成,先启动provider的服务,再启动consumer服务。可以观察到zookeeper的黑窗口在注册服务(如果没动就是没弄好,估计是配置参数问题)
zookeeper图太长,没发
页面测试

,后端控制台打印



成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: