本篇主要介绍了Quarkus中的远程调用,云原生JAVA开发框架项目的结构采用了传统的微服务模式。演示了如何编写符合istio的Quarkus java 程序。
一、项目准备
1、创建一个项目xyzshop,包括三个模块(按照 dubbo,spring cloud 示例的方式来组织):
2、xyzshop-api: facade 模块,包含接口,方法的声明
3、xyzshop-provider: 服务的具体实现
4、xyzshop-consumer: 服务调用方
本示例源码参见:https://github.com/cloudbeer/quarkus-demo-xyzdemo
二、facade 模块
facade 模块会被不同的模块引用,服务提供者来实现它,服务消费者通过引用它提供简化调用,这个包应该减小体积,去除非必要外部依赖。
本示例的facade 模块是 xyzshop-api, 里包含了实体类以及 OrderService 接口。
接口中可以约定接口的 restful 地址和配置。
为了能让 facade 模块能被注入,需要在编译的时候加入 CDI 索引。
在 pom.xml 中加入如下配置:
三、provider 模块
xyzshop-provider 比较简单,直接引用xyzshop-api,实现接口就可以了。
但为了让 Quarkus 能找到资源,需要在实现类中加入 @Path 标记。
使用 mvn compile quarkus:dev 启动项目即可。
四、consumer 模块
需要在配置里指定服务的远程调用地址:
部署的时候,我会把 k8s 的服务提供者部署成 xyzshop-provider,端口 8080。
但在本地开发的时候,用 http://localhost:8080 就好。
消费端的代码示例如下:
同时启动,需要重新配置一下启动端口,在 application.properties 文件中:
启动的时候有个警告 debug 端口被占用,可以重新指定一下,请使用下面的命令启动:
rest-client 扩展已经在 rpc 中内置了 opentracing 的 header。istio 的调用链追踪可以完美支持。
云原生JAVA开发框架项目在Quarkus中的远程调用 文章为作者独立观点不代表久云立场,未经允许不得转载。如有侵权请联系负责人,将会立刻删除!
发表评论 快来秀出你的观点