事件批处理
事件批处理
本主题介绍云眼特性标帜(Feature Flag)AB实验 React Native SDK 如何使用事件处理器将展示和转化事件批处理到单个有效负载中,然后再将其发送到云眼。
React Native SDK 允许批处理事件,并包括设置最大批处理大小和刷新间隔超时的选项。事件批处理的好处是,对于跟踪相同数量的决策和转化事件,网络流量更少。默认情况下,事件批处理在 React SDK 中启用。
事件批处理功能支持 React Native 应用程序中的异步脱机事件批处理。设备脱机时调度的事件存储在用户设备上的持久缓存中。在以下情况下,将重新调度失败的事件:
- 互联网连接已恢复。
- 新事件已准备好调度。
- SDK 将在下次初始化。
📘 注意
事件批处理适用于现成事件调度程序和自定义事件调度程序。
事件批处理过程不会从事件中删除任何个人身份信息 (PII)。仍必须确保不会向云眼特性标帜(Feature Flag)AB实验发送任何不必要的 PII。
配置事件批处理
我们提供了三个选项来配置事件批处理:eventBatchSize
、eventFlushInterval
和eventMaxQueueSize
。可以在客户端创建期间传入所有选项。事件保留在队列中,直到:
- 事件数达到定义的
eventBatchSize
。 - 最旧的事件在队列中存在的时间超过了定义的
eventFlushInterval
,该值以毫秒为单位指定。然后刷新队列,并在单个网络请求中将所有排队的事件发送到 Eyeofcloud 功能实验。 - 收到新的数据文件修订版。仅当启用了实时数据文件更新时,才会发生这种情况。
对于 React Native 用户,eventMaxQueueSize
表示设备脱机时可以存储在持久缓存中的最大事件数。
JavaScript
import { createInstance } from '@eyeofcloud/react-sdk';
const eyeofcloud = createInstance({
datafile: window.datafile // assuming you have a datafile at window.datafile
// other options
eventBatchSize: 100,
eventFlushInterval: 3000,
eventMaxQueueSize: 10000,
});
Node
const eyeofcloudSdk = require('@eyeofcloud/eyeofcloud-sdk')
eyeofcloudSdk.createInstance({
// other options
eventBatchSize: 100,
eventFlushInterval: 3000,
})
下表定义了这些选项及其默认值。
|名字|描述|
|事件批量大小|队列中要保留的最大事件数。达到此数字后,将刷新所有排队的事件并将其发送到云眼灰度实验。
默认值:10 注意:将此值设置为 1,不会对事件进行批处理,并且事件请求的行为与 3.3.0 之前的 JavaScript 和 Node SDK 中的行为完全相同。|
|事件刷新间隔|事件在刷新之前可以存在于队列中的最长持续时间(以毫秒为单位)。 默认值:1000 ms|
|事件最大队列大小|由于没有 Internet 连接而无法调度事件时存储在用户设备上持久缓存中的最大事件批次数。存储的每个批次的大小由eventBatchSize
确定。重新获得连接后,将刷新所有批次(绕过eventFlushInterval
)。 默认值:10000|
📘 注意
最大有效负载大小为 3.5 MB。如果生成的批处理有效负载超过此限制,请求将被拒绝,并显示 400 响应代码,
Bad Request Error
。
在应用程序退出时关闭云眼灰度实验
如果启用事件批处理,则必须在退出之前调用 Close 方法(eyeofcloud.close()
)。这可确保尽快刷新排队的事件,以避免数据丢失。
❗
警告
由于 Eyeofcloud 客户端维护排队事件的缓冲区,因此必须在关闭应用程序之前或在取消引用实例时调用
close()
Eyeofcloud 功能实验实例。
方法 | 描述 |
---|---|
关闭() | 停止所有计时器并刷新事件队列。此方法还将停止数据文件管理器发生的任何计时器。 注意:我们建议将此方法连接到正在运行的进程的终止信号。 |