小编fab*_*ica的帖子

从POJO到Avro Record的通用转换

我正在寻找一种以通用方式将POJO转换为avro对象的方法.对于POJO级的任何更改,实现都应该是健壮的.我已经实现了它,但明确地填写了avro记录(参见下面的示例).

有没有办法摆脱硬编码的字段名称,只是填充对象的avro记录?反射是唯一的方式,还是avro提供开箱即用的功能?

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.avro.Schema;
import org.apache.avro.generic.GenericData.Record;
import org.apache.avro.reflect.ReflectData;

public class PojoToAvroExample {

    static class PojoParent {
        public final Map<String, String> aMap = new HashMap<String, String>();
        public final Map<String, Integer> anotherMap = new HashMap<String, Integer>();
    }

    static class Pojo extends PojoParent {
        public String uid;
        public Date eventTime;
    }

    static Pojo createPojo() {
        Pojo foo = new Pojo();
        foo.uid = "123";
        foo.eventTime = new Date();
        foo.aMap.put("key", "val");
        foo.anotherMap.put("key", 42);
        return foo;
    }

    public static void …
Run Code Online (Sandbox Code Playgroud)

java avro

15
推荐指数
3
解决办法
2万
查看次数

gitlab-ci 中的“每当构建 SNAPSHOT 依赖项时构建”概念

我目前正在将很多 maven-jenkins-jobs 迁移到 gitlab-ci。

在这些 jenkins-jobs 中,我的团队严重依赖“每当构建 SNAPSHOT 依赖项时构建”触发器,因为我们有许多相互依赖的构建工件(jars 和 wars)。这样,保证了如果lib-SNAPSHOT.jar被改变和重建,也dependent-SNAPSHOT.war被重建,潜在的兼容性问题立即出现。

我想我也可以达到同样的行为,如果我手动设置触发器之间神器建立,如描述在这里

现在,每当在项目 A 上推送新标签时,作业将 [...] 执行,从而触发项目 B 的重建

但是,这将非常难以维持。是否有更好/更优雅/更少维护工作/更神奇的解决方案来实现这一目标?

gitlab-ci

5
推荐指数
0
解决办法
1589
查看次数

标签 统计

avro ×1

gitlab-ci ×1

java ×1