内容简介:作为 Martian 框架的一个分布式组件,由于其面向的场景是需要分布式开发的大型项目,所以在 Martian 还未被大众接纳之前,显得非常的渺小,因为没有大型项目敢用这个东西。 也因为上面的原因,所以一直更新缓慢,...
作为 Martian 框架的一个分布式组件,由于其面向的场景是需要分布式开发的大型项目,所以在 Martian 还未被大众接纳之前,显得非常的渺小,因为没有大型项目敢用这个东西。
也因为上面的原因,所以一直更新缓慢,很少提及,但是 这一次我重新拾起这个组件,进行了一轮改造和重构,使其稳定性和 架构的合理性 提高了不少。
这次的更新点如下
- 对代码进行了大量重构,在项目结构和代码设计上做了优化
- 把一开始的序列化传参 改成了常规的传参,这样就可以支持从网关转发过来的请求了
- 调用方可以自行设置ContentType
如何搭建一个Martin-cloud项目
在Martian项目中添加如下jar包
<dependency>
<groupId>com.github.yuyenews</groupId>
<artifactId>mars-cloud-starter</artifactId>
<version>最新版,具体看《组件介绍》</version>
</dependency>
配置类换一个父类,实现getCloudConfig方法
将Martian项目的的配置类换一个父类(继承MarsCloudConfig)
public class DemoConfig extends MarsCloudConfig {
// 在开发Martian项目时,实现的那些方法保留即可,因为都需要用
/**
* 在上面的基础之上再实现这个方法,用于配置cloud
*/
@Override
public CloudConfig getCloudConfig() {
CloudConfig cloudConfig = new CloudConfig();
// 服务名称,同一个服务的负载均衡集群的name必须一致,不同集群之间必须唯一
cloudConfig.setName("");
// 尽量长一点,防止接口过多来不及发布
cloudConfig.setSessionTimeout(10000L);
// 请求Mars-Cloud接口超时时间
cloudConfig.setTimeOut(10000L);
// 是否作为网关
cloudConfig.setGateWay(false);
// zookeeper地址,多个地址用英文逗号分割
cloudConfig.setRegister("");
// 负载均衡策略(暂时只支持轮询,随机两种)
cloudConfig.setStrategy(Strategy.POLLING);
// 本服务所在服务器的的IP,如果不配置会自动获取内网IP,配置了就以配置的为主
cloudConfig.setIp("");
return cloudConfig;
}
}
引入组件
在启动类上面加上@MarsImport注解,并配置packageName
@MarsImport(packageName = "com.mars.cloud.components")
public class Start {
public static void main(String[] args) {
StartMars.start(Start.class, new DemoConfig());
}
}
完成以上三步,一个Martian项目就变成了Martian-cloud项目了
Feign调用
- 建一个普通的 java 接口(interface)
- 在类上面加上MarsFeign注解,具体看下面示例:
/*
这个注解的serverName跟你要调用的那个服务的name一致(配置类里cloud配置的name)
beanName 不写的话,默认为类名首字母小写
*/
@MarsFeign(serverName="mars-demo",beanName="demoFeign")
public interface DemoFeign {
/*
这里面的所有方法,跟你要调用的那个API中的方法名一致
方法的参数,跟你要调用的那个API一样
*/
返回类型 insert(DemoEntity entity);
/*
可以用@MarsContentType注解 来指定本次请求的ContentType
*/
@MarsContentType(ContentType = ContentType.JSON)
返回类型 selectList(DemoEntity entity);
}
在你的MarsBean里注入这个对象
@MarsBean("testService")
public class TestService {
@MarsWrite("demoFeign")
private DemoFeign demoFeign;
}
然后直接调用里面的方法即可
注意事项
@MarsContentType 注解 一共有三个选项:
- FORM, 普通的表单提交(可以跟POST,GET等任意请求方式一起使用)
- FORM_DATA, 流的方式提交,除了GET以外,其他的请求方式均可使用,一般用于传输文件
- JSON,以JSON字符串的形式提交,除了GET以外,其他的请求方式均可使用
如果不配的话,默认是以表单的形式提交
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- NPM包(模块)发布、更新、撤销发布
- 有赞灰度发布与蓝绿发布实践
- 【重磅发布】Linkis 0.10.0 版本发布
- BeetlSQL 3.0.9 发布,Idea 插件发布
- 贝密游戏 0.7.0 发布,发布斗地主
- 【重磅发布】DataSphere Studio 0.9.0 版本发布
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
产品的视角:从热闹到门道
后显慧 / 机械工业出版社 / 2016-1-1 / 69.00
本书在创造性的提出互联网产品定义的基础上,为读者提供了一个从0基础到产品操盘手的产品思维培养方法! 全书以互联网产品定义为基础,提出了产品思维学习的RAC模型,通过认识产品、还原产品和创造产品三个阶段去培养产品思维和产品认知。 通过大量的图片和视觉引导的方法,作者像零基础的用户深入浅出的描绘了一条产品经理的自我修养路径,并且提供了知识地图(knowledge map)和阅读雷达等工具,......一起来看看 《产品的视角:从热闹到门道》 这本书的介绍吧!