环境:
eclipse3.7
tomcat8.5
jdk1.8
zookeeper-3.4.10
dubbo-admin-2.5.9
duboo下载地址
https://github.com/apache/incubator-dubbo/releases
启动D:\apache\zookeeper-3.4.10\bin -> zkServer.cmd
dubbo下载后,进入admin目录用maven编译,将dubbo-admin-2.5.9放入TOMCAT当中并启动TOMCAT
启动后验证是否成功
http://localhost:8080/dubbo-admin-2.5.9/
账号root 密码root
本文是分成三个项目在开发,目的是可以分开发布,如果放在一个项目当中感觉耦合性太强.当然在实现在也可以放在一个项目当中分三个modle实现
导入dubbo-starter,在application.properties配置属性,使用@Service注解来暴露服务,使用@Reference来引用服务。具体可参考 Dubbo整合SpringBoot,这里截取部分代码方便理解。
属性在application.properties中配置
服务提供方使用@Service注解暴露服务
服务消费方使用@Reference注解来引用服务
项目分为api,Producer(生产者),Consumer(消费者)
api项目
接口定义
package com.example.service;
public interface TestService {
String sayHello(String name);
}
Producer项目
application.properties
server.port=8011
#producer
dubbo.application.name=dubbo-provider
#\u6CE8\u518C\u4E2D\u5FC3\u7684\u534F\u8BAE\u548C\u5730\u5740
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181#\u901A\u4FE1\u89C4\u5219\uFF08\u901A\u4FE1\u534F\u8BAE\u548C\u63A5\u53E3\uFF09
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880#\u8FDE\u63A5\u76D1\u63A7\u4E2D\u5FC3
dubbo.monitor.protocol=registry
接口的实现类
package com.example.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.example.service.TestService;@Service(version = "1.0.0")
public class TestServiceImpl implements TestService {
@Override
public String sayHello(String name) {return "Hello " + name + "!";
}
}
DubboProducerApplication
的启动类上添加
@EnableDubbo
已扫描服务,添加到dubbo当中注册
Consumer项目
maven
application.properties
server.port=8012
dubbo.application.name=dubbo-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.monitor.protocol=registry
TestController消费服务
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import com.alibaba.dubbo.config.annotation.Reference;
import com.example.service.TestService;
/**
* Created by chenqimiao on 17/3/24.
*/
@Controller
public class TestController {@Reference(version = "1.0.0")
private TestService testService;
@RequestMapping(value = "/sayHello" ,produces = "application/json;charset=utf-8")
@ResponseBody
public String test(){
return testService.sayHello("Chenqimiao");
}
}
DubboConsumerApplication的启动类上添加
@EnableDubbo
运行DubboConsumerApplication
测试
http://localhost:8012/sayHello
github: