//注意,这里还是使用的Spring中的Service(Dubbo后面会讲)
@Service
publicclassOrderServiceImpl implements OrderService {
@Autowired
UserService userService;
@Override
publicvoid createOrder(Integer userId) {
/*查询用户信息*/
Logger logger = LoggerFactory.getLogger(getClass());
logger.info(userService.getUser(1)+"");
}
}
因为我们使用了Spring注解,所以我们需要加入包扫描来发现我们的注解
修改consumer.xml
<?xmlversion="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:applicationname="order-service" />
<!-- 使用multicast广播注册中心暴露发现服务地址 -->
<dubbo:registryaddress="zookeeper://127.0.0.1:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:referenceid="userService" interface="com.shouwang.apimanager.service.UserService" />
<!--配置包扫描-->
<context:component-scanbase-package="com.shouwang.orderservice.serviceImpl"></context:component-scan>
</beans>
创建Consumer类
publicclassConsumer {
publicstatic void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = newClassPathXmlApplicationContext("consumer.xml");
context.start();
OrderService orderService = (OrderService)context.getBean(OrderService.class);// 获取远程服务代理
orderService.createOrder(1); // 执行远程方法
System.in.read();//防止退出
}
}
这里会报错,因为我们的User是要在网络上传输的,所以必须实现Serializable接口
修改后的User
@Data
publicclassUser implements Serializable {
privateInteger id;
privateString name;
privateString addr;
}
再次运行,成功完成一次RPC
同样进入dubbo-admin,得到以下结果
服务数:1 应用数:2 提供者数:1 消费者数:1
4. 简单的监控中心simple-monitor我的监控中心已经解压到E:dubbo-monitor-simple-2.0.0下
同样你可以在dubbo github主页上获取最新版本
打包方式和控制台相似
嫌打包麻烦也可以直接在assembly.bin文件夹里通过start.sh启动
启动后访问http://localhost:8080即可
然后在我们提供者和消费者xml配置中新增
<!--监控中心-->
<dubbo:monitorprotocol="registry"></dubbo:monitor>
开发环境下用我配置好的即可,但是生产环境下记得将conf目录下Zookeeper的路径以及端口配置好
这里不再赘述,更多详细说明可以参照官网https://dubbo.apache.org/zh-cn/docs/user/references/xml/dubbo-monitor.html
控制台和监控中心类似,2选1甚至不选都是可以的
5. Dubbo与SpringBoot整合
- 1. 准备工作
为了让我写的教程成为参考手册(减少各个章节之间的关联,成为松耦合的教程),我们重新创建模块并进行开发
以下是新的假设场景
开发一个云笔记项目(类似于有道云笔记)
为了简化我们的教程,我们只编写以下两个服务
笔记服务
用户服务
创建笔记的时候我们需要消费用户服务以得到创建者的信息
新建两个模块(加springboot前缀是为了区分之前的xml配置项目,实际生产环境下名字自取)
在自定义目录下创建一个空文件夹
创建完成后用IDEA打开指定项目
在文件夹中创建一个Maven项目(这是api服务)
springboot-user-api
创建结束后需要对pom文件进行改造,具体改造参照源码
<?xmlversion="1.0" encoding="UTF-8"?>
<projectxmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
推荐阅读
- Dubbo框架的一些很好用的点,80%程序员还不知道
- C 语言和 C++、C# 的区别在什么地方?
- 20万元罐天价茶惊现西安
- 如何煮安化黑茶好喝,安化黑茶是煮还是泡
- 花洒关了为什么会滴一些水,花洒关了还滴水解决小妙招
- 空调一会漏水一会不漏水是什么原因,空调一会漏水一会不漏是什么情况
- 太阳能热水器怎么上水,太阳能热水器什么时候上水好
- 空调管路杀菌怎么操作,空调管路杀菌多久一次
- 面霜|什么面霜抗衰老紧致效果好
- 客厅挂灰色的窗帘好吗,客厅适合什么材质的窗帘
