事件批处理
事件批处理
本主题介绍云眼灰度标帜(Feature Flag)AB实验 JavaScript(浏览器)SDK 如何使用事件处理器将展示和转化事件批处理到单个有效负载中,然后再发送。
云眼灰度标帜(Feature Flag)AB实验 Javascript(浏览器)SDK 允许批处理事件,并包括用于设置最大批处理大小和刷新间隔超时的选项。事件批处理的好处是,跟踪的展示和转化事件数量相同,网络流量更少。
默认情况下,在 JavaScript SDK 版本 3.3.0 或更高版本中启用事件批处理。
📘 注意
事件批处理适用于现成事件调度程序和自定义事件调度程序。
事件批处理过程不会从事件中删除任何个人身份信息 (PII)。仍必须确保不会向云眼发送任何不必要的 PII。
基本示例
我们提供了两个选项来配置事件批处理:eventBatchSize
和eventFlushInterval
。可以在客户端创建期间传入这两个选项。事件保留在队列中,直到:
事件数达到定义的
eventBatchSize
.最旧的事件在队列中存在的时间超过了定义的
eventFlushInterval
,该值以毫秒为单位指定。然后刷新队列,并在单个网络请求中将所有排队的事件发送到 Eyeofcloud 功能实验。收到新的数据文件修订版。仅当启用了实时数据文件更新时,才会发生这种情况。
使用 NPM
let eyeofcloudSdk = require('@eyeofcloud/eyeofcloud-sdk');
eyeofcloudSdk.createInstance({
// other options
eventBatchSize: 100,
eventFlushInterval: 3000,
})
默认情况下,批大小为 10,刷新间隔为 1 秒。
下表定义了这些选项并列出了一般建议。在浏览器上,我们建议使用小eventBatchSize
(10)和短eventFlushInterval
(1000)。这可确保以相对较快的方式发送事件,因为如果用户立即退回,某些事件可能会丢失,同时在许多决策调用连续发生的情况下获得网络效率。
名字 | 描述 | 推荐值 |
---|---|---|
eventBatchSize | 要发送到云眼灰度实验的事件批次的最大大小。默认值:10 | 10 |
eventFlushInterval | 事件在刷新之前可以存在于队列中的最长持续时间(以毫秒为单位)。 默认值:1000 | 1000 |
更多信息,请参见初始化SDK。
副作用
下表描述了与事件批处理相关的其他功能。
功能性 | 描述 |
---|---|
日志事件 | 每当事件处理器生成一批要调度的事件时,都会创建一个 LogEvent 通知对象,其中包含 该批转换和决策事件。 此对象将使用提供的事件调度程序进行调度,并且还将发送给通知订阅者(见下文)。 |
通知侦听器 | 将 LogEvent 传递给事件调度程序时触发LOG_EVENT通知侦听器 |
注册日志事件侦听器
注册日志事件通知侦听器
JavaScript
// Using notificationCenter to register logEvent listener
eyeofcloud.notificationCenter
.addNotificationListener(eyeofcloudEnums.NOTIFICATION_TYPES.LOG_EVENT, (logEvent) => {});
日志事件
它表示我们发送到云眼灰度标帜(Feature Flag)AB实验后端的一批决策和转换事件。
参数 | 描述 |
---|---|
url | 要将日志事件调度到的 URL |
httpVerb | 调度日志事件时要使用的 HTTP 谓词 |
params | 包含事件批处理 |
在应用程序退出时关闭云眼灰度标帜(Feature Flag)AB实验
如果启用事件批处理,则必须在退出之前调用 Close 方法 ()。这可确保尽快刷新排队的事件,以避免任何数据丢失。eyeofcloud.close()
❗
警告
由于 Eyeofcloud 客户端维护排队事件的缓冲区,因此必须在关闭应用程序之前或在取消引用实例时调用
close()
Eyeofcloud 功能实验实例。
方法 | 描述 |
---|---|
close() | 停止所有计时器并刷新事件队列。此方法还将停止数据文件管理器发生的任何计时器。 注意:我们建议将此方法连接到正在运行的进程的终止信号。 |
可以挂钩到SIGTERM
事件以确保调用close()
事件,从而保证发送队列中的所有事件。