Martin-Cloud 发布 3.0.20

栏目: 软件资讯 · 发布时间: 4年前

内容简介:作为 Martian 框架的一个分布式组件,由于其面向的场景是需要分布式开发的大型项目,所以在 Martian 还未被大众接纳之前,显得非常的渺小,因为没有大型项目敢用这个东西。 也因为上面的原因,所以一直更新缓慢,...

作为 Martian 框架的一个分布式组件,由于其面向的场景是需要分布式开发的大型项目,所以在 Martian 还未被大众接纳之前,显得非常的渺小,因为没有大型项目敢用这个东西。

也因为上面的原因,所以一直更新缓慢,很少提及,但是 这一次我重新拾起这个组件,进行了一轮改造和重构,使其稳定性和 架构的合理性 提高了不少。

这次的更新点如下

  1. 对代码进行了大量重构,在项目结构和代码设计上做了优化
  2. 把一开始的序列化传参 改成了常规的传参,这样就可以支持从网关转发过来的请求了
  3. 调用方可以自行设置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调用

  1. 建一个普通的 java 接口(interface)
  2. 在类上面加上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 注解 一共有三个选项:

  1. FORM, 普通的表单提交(可以跟POST,GET等任意请求方式一起使用)
  2. FORM_DATA, 流的方式提交,除了GET以外,其他的请求方式均可使用,一般用于传输文件
  3. JSON,以JSON字符串的形式提交,除了GET以外,其他的请求方式均可使用

如果不配的话,默认是以表单的形式提交


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

游戏引擎架构

游戏引擎架构

[美] Jason Gregory (杰森.格雷戈瑞) / 叶劲峰 / 电子工业出版社 / 2014-1 / 128.00元

《游戏引擎架构》同时涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽皮狗。虽然书中采用的例子通常依据一些专门的技术,但是讨论范围远超于某个引擎或API。文中的参考及引用也非常有用,可让读者继续深入游戏开发过程的任何特定方向。 《游戏引擎架构》为一个大学程度的游戏编程课程而编写,但也适合软件工程师、业余爱好者、自学游戏程......一起来看看 《游戏引擎架构》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具