gpt4 book ai didi

java - 如何将多条消息转换为一条消息?

转载 作者:行者123 更新时间:2023-11-29 04:12:34 25 4
gpt4 key购买 nike

每天我们都会在 Student-Topic-In 中收到以下消息

Message 1: {"StudentID": "1", "StudentName":"aaa","fatherName":"aaa1",  "class":"1"}
Message 2: {"StudentID": "2", "StudentName":"bbb","fatherName":"bbb1", "class":"1"}
Message 3: {"StudentID": "3", "StudentName":"ccc","fatherName":"ccc1", "class":"2"}
Message 4: {"StudentID": "4", "StudentName":"ddd","fatherName":"ddd1", "class":"2"}
Message 5: {"StudentID": "5", "StudentName":"eee","fatherName":"eee1", "class":"2"}

一天结束时(一天一次)基于每个类(class),我们必须合并所有消息并以以下格式发布到“Student-Topic-Out”。

Message 1:{"Class":"1"
{"StudentID": "1", "StudentName":"aaa","fatherName":"aaa1"},
{"StudentID": "2", "StudentName":"bbb","fatherName":"bbb1"}
}
Message 2:{"Class":"2"
{"StudentID": "3", "StudentName":"ccc","fatherName":"ccc1"},
{"StudentID": "4", "StudentName":"ddd","fatherName":"ddd1"},
{"StudentID": "5", "StudentName":"eee","fatherName":"eee1"}
}

我尝试了以下方法,但不知道如何创建没有类(class)名称的学生列表?

KStream<String, Object> sampleStream = builder.stream("Student-Topic-in");
sampleStream
.filter((k, v) -> v != null)
.mapValues(v -> (Student) v)
.groupBy((k, v) -> KeyValue.pair(v.getClass_name(), v))
.windowedBy(TimeWindows.of(5000))
//I am not sure how to create a student list without Classname
.aggregate(Student::new, (k, v, list) -> (Student)list.add((Student)v)

能否请您告诉我,如何构造输出 JSON 消息 Kafka Streams?

最佳答案

你可以做一个 KStream.groupBy(...).windowedBy().aggregate().mapValues使用“类”属性进行分组。

Aggregator()你可以组装一个List你变成的学生 JSONmapValues()

关于java - 如何将多条消息转换为一条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54165524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com