springboot整合dubbo

这里只是简单的整合,先要下载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" οnclick="dubbo();">
	</div>
</body>
</html>

至此,配置完成,先启动provider的服务,再启动consumer服务。可以观察到zookeeper的黑窗口在注册服务(如果没动就是没弄好,估计是配置参数问题)

zookeeper图太长,没发

页面测试,后端控制台打印


成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值