目前我正在做一个学期项目,我必须认识三个事件的系列。像P-
我们有两种不同的事件类型,它们通过同一主题中的Kafka连接器使用。
我创建了一个名为Event的父类,其他两种类型都是从该类派生的。
Kafka连接器使用EventSchema将JSON反序列化为父类Event。
val consumer = new FlinkKafkaConsumer("events", new EventSchema, properties)
val stream = env.addSource(consumer)
模式如下所示:
val pattern = Pattern
.begin[Event]("before")
.subtype(classOf[Position])
.next("recognized")
.subtype(classOf[Recognized])
.next("after")
.subtype(classOf[Position])
当前的问题是,如果我发送三条具有适当格式的消息,该模式将无法识别。
我还试过什么。。我改变了模式如下:
val pattern = Pattern
.begin[Event]("before")
.where(e => e.getType == "position")
.next("recognized")
.where(e => e.getType == "recognition")
.next("after")
.where(e => e.getType == "position")
这种模式有效,但后来我无法将Event类转换为位置或识别...
我错过了什么?
根据注释,我认为应该返回子类型实例,而不是事件。以下是我为您提供的示例代码:
val event = mapper.readValue(bytes, classOf[Event])
event.getType match {
case "position" => mapper.readValue(bytes, classOf[Position])
case "recognition" => mapper.readValue(bytes, classOf[Recognized])
case _ =>
}
我在CEPITCase的一个测试用例中成功地尝试了这个示例。JAVA
DataStream<Event> input = env.fromElements(
new Event(1, "foo", 4.0),
new SubEvent(2, "foo", 4.0, 1.0),
new SubEvent(3, "foo", 4.0, 1.0),
new SubEvent(4, "foo", 4.0, 1.0),
new Event(5, "middle", 5.0)
);
Pattern<Event, ?> pattern = Pattern.<Event>begin("start").subtype(SubEvent.class)
.followedByAny("middle").subtype(SubEvent.class)
.followedByAny("end").subtype(SubEvent.class);
我有一个从提取的代码,对于多个子类来说,这个代码看起来应该完全相同,所以我尽量避免重复。但是,实际上(见下文),scala认为是一个泛型的,返回的值类型为,当然,它没有和方法。 问题是在这里避免重复的适当方法是什么?我对将转换为字符串并不那么着迷,因为这段代码可以使用刚从字符串解析为AST的json。我开始考虑为我需要的三种类型编写包装器,并将这些类型的匹配和隐式转换器转换为包装器,然后为这些包装
1. 什么是事件模型? “百度分析云”基于“user-event”的数据模型。 您可以简单理解为两张大表,一张记录人的属性,一张记录人的行为。两张表通过唯一ID进行关联。 在event表,即事件表里,每一条用户行为就是一条记录。 2. 事件模型相比于传统PV模型的优势? 传统的流量分析工具会以“PV(页面浏览量)”为核心,去衡量产品的价值。而随着流量红利的消退,以及线上线下日趋融合,PV指标已经不
监听函数 浏览器的事件模型,就是通过监听函数(listener)对事件做出反应。事件发生后,浏览器监听到了这个事件,就会执行对应的监听函数。这是事件驱动编程模式(event-driven)的主要编程方式。 JavaScript 有三种方法,可以为事件绑定监听函数。 HTML 的 on- 属性 HTML 语言允许在元素的属性中,直接定义某些事件的监听代码。 <body onload="doSomet
模型事件实现 psr/event-dispatcher 接口,默认由 hyperf/event 组件提供功能支持。 运行事件 在 ORM 的运行期间,会对应触发以下事件,您可以进行对这些事件进行监听以满足您的需求。 事件 描述 Hyperf\Database\Events\QueryExecuted Query 语句执行后 Hyperf\Database\Events\StatementPrepa
事件监听分两种,一种是仅限于对象的事件,另一种是静态方法触发的事件。 监听方式分两种:1、在类里写监听代码;2、定义监听类 批量操作的事件监听,一般建议用监听类方式。对象的事件监听根据习惯选择即可。 事件列表 模型对象事件 事件名 常量 描述 BeforeInsert ModelEvents::BEFORE_INSERT 插入前,insert()/save()触发 AfterInsert Mode
模型事件 模型事件是指在进行模型的写入操作的时候触发的操作行为,包括模型的save方法和delete方法。 模型事件只在调用模型的方法生效,使用查询构造器操作是无效的 模型支持如下事件: 事件 描述 快捷方法 before_insert 新增前 beforeInsert after_insert 新增后 afterInsert before_update 更新前 beforeUpdate afte