事件批处理
事件批处理
本主题介绍云眼特性标帜(Feature Flag)AB实验 C# SDK 如何使用事件处理器在发送决策和转换事件之前将其批处理到单个有效负载中。
云眼特性标帜(Feature Flag)AB实验 C# SDK 将决策和转换事件批处理到单个有效负载中,然后再将其发送到云眼。这是通过称为事件处理器的新 SDK 组件实现的。
事件批处理可以减少对云眼特性标帜(Feature Flag)AB实验的出站请求数,具体取决于您定义、配置和使用事件处理器的方式。这意味着,跟踪的展示次数和转化事件数量相同,网络流量就会减少。
在 C# SDK 中,BatchEventProcessor
提供EventProcessor
接口的实现和批处理事件。可以根据两个参数控制批处理:
- 批大小:定义在发送到云眼特性标帜(Feature Flag)AB实验之前一起批处理的事件数。
- 刷新间隔:定义任何批处理事件应发送到云眼特性标帜(Feature Flag)AB实验的时间量。
当批大小达到指定的限制或刷新间隔达到指定的时间限制时,将发送由批处理有效负载组成的事件。 下面将更详细地介绍BatchEventProcessor
选项。
📘 注意
事件批处理适用于现成事件调度程序和自定义事件调度程序。
事件批处理过程不会从事件中删除任何个人身份信息 (PII)。仍必须确保不会向云眼特性标帜(Feature Flag)AB实验发送任何不必要的 PII。
基本示例
C#
using EyeofcloudSDK;
class App
{
static void Main(string[] args)
{
string sdkKey = args[0];
// Returns Eyeofcloud Client
EyeofcloudFactory.NewDefaultInstance(sdkKey);
}
}
默认情况下,批大小为 10,刷新间隔为 30 秒。
高级示例
C#
using EyeofcloudSDK;
class App
{
static void Main(string[] args)
{
string sdkKey = args[0];
ProjectConfigManager projectConfigManager = HttpProjectConfigManager.builder()
.WithSdkKey(sdkKey)
.Build();
BatchEventProcessor batchEventProcessor = new BatchEventProcessor.Builder()
.WithMaxBatchSize(10)
.WithFlushInterval(TimeSpan.FromSeconds(30))
.Build();
Eyeofcloud eyeofcloud = new Eyeofcloud(
projectConfigManager,
.. // Other Params
..batchEventProcessor
);
}
}
批处理事件处理器
BatchEventProcessor
是EventProcessor
事件批处理位置的实现。该类维护单个使用者线程,该线程从BlockingCollection
中提取事件,并在将LogEvent
结果发送到EventDispatcher
和NotificationCenter
之前缓冲这些事件,以达到配置的批大小或最大持续时间。
以下属性可用于_使用生成器类自定义_批处理事件处理器配置
属性 | 默认值 | 描述 |
---|---|---|
事件调度程序 | DefautEventDispatcher | 用于将事件有效负载调度到云眼灰度实验。 |
批量大小 | 10 | 调度前要批处理的最大事件数。达到此数字后,将刷新所有排队的事件并将其发送到云眼灰度实验。 |
冲洗间隔 | 30000(30 秒) | 在批处理和调度事件之前等待的毫秒。 |
事件队列 | 1000 | BlockingCollection,将要由执行程序批处理和调度的各个事件排队。 |
通知中心 | 零 | 用于触发任何通知的通知中心实例。 |
默认值
描述
事件调度程序
DefautEventDispatcher
用于将事件有效负载调度到云眼特性标帜(Feature Flag)AB实验。
批量大小
10
调度前要批处理的最大事件数。达到此数字后,将刷新所有排队的事件并将其发送到云眼特性标帜(Feature Flag)AB实验。
冲洗间隔
30000(30 秒)
在批处理和调度事件之前等待的毫秒。
事件队列
1000
BlockingCollection,将要由执行程序批处理和调度的各个事件排队。
通知中心
零
用于触发任何通知的通知中心实例。
更多信息,请参见初始化SDK。
副作用
下表列出了使用此类可能触发的其他云眼特性标帜(Feature Flag)AB实验功能。
功能性 | 描述 |
---|---|
日志事件(请参阅下一节) | 每当事件处理器生成一批事件时,将使用事件工厂创建一个 LogEvent 对象。 它包含一批转换和决策事件。 此对象将使用提供的事件调度程序进行调度,并且还将发送给通知订阅者。 |
通知侦听器 | 刷新将调用 LOGEVENT 通知侦听器(如果此侦听器已订阅)。 |
注册日志事件侦听器
要注册日志事件侦听器,请执行以下操作:
C#
NotificationCenter.AddNotification(
NotificationType.LogEvent,
new LogEventCallback((logevent) => {
// Your code here
})
);
日志事件
LogEvent 对象是使用 EventFactory 创建的。它表示我们发送到云眼特性标帜(Feature Flag)AB实验后端的一批决策和转换事件。
对象 | 类型 | 描述 |
---|---|---|
Url 必须 | 字符串 | 将日志事件调度到的URL |
所需参数 | 字典<字符串,对象> | 要在日志事件中设置的参数。它包含访客内所有用户事件的事件批处理。 |
需要 HttpVerb | 字符串 | 调度日志事件时要使用的 HTTP 谓词。它可以是 GET 或 POST。 |
头 | 字典<字符串、字符串>标头 | 发送请求时要设置的标头。 |
在应用程序退出时优化处理功能实验
如果启用事件批处理,则必须在退出之前调用 Close 方法 (eyeofcloud.Dispose()
)。这可确保尽快刷新排队的事件,以避免数据丢失。
❗
警告
由于 Eyeofcloud 功能实验客户端维护排队事件的缓冲区,因此必须在关闭应用程序之前或在取消引用实例时调用
Dispose()
实例。
方法 | 描述 |
---|---|
Dispose() | 停止所有计时器并刷新事件队列。此方法还将停止数据文件管理器发生的任何计时器。 |