配置事件调度程序
配置事件调度程序
本主题介绍如何为云眼灰度发布(特性标帜)AB实验 Java SDK 中每次展示或转化发出的 HTTP 请求配置事件调度程序。
云眼灰度发布(特性标帜)AB实验 SDK 为每个触发的决策事件或转化事件发出 HTTP 请求。每个 SDK 都有一个内置的事件调度程序来处理这些事件,但我们建议根据环境的具体情况重写它。
Java SDK 有一个现成的异步调度程序。建议自定义在生产中使用的事件调度程序,以确保以可扩展到应用程序处理的卷的方式对事件进行排队和发送。通过自定义事件调度程序,可以利用批处理等功能,从而更轻松地有效地处理大型事件量或在请求失败时实现重试逻辑。可以从头开始构建调度程序,也可以从提供的调度程序开始。
这些示例显示,要自定义事件调度程序,请使用事件调度程序实例初始化 Eyeofcloud 客户端(或管理器)。
Java
import com.eyeofcloud.ab.Eyeofcloud;
import com.eyeofcloud.ab.config.parser.ConfigParseException;
import com.eyeofcloud.ab.event.AsyncEventHandler;
import com.eyeofcloud.ab.event.EventHandler;
/**
* Creates an async event handler with a max buffer of
* 20,000 events and a single dispatcher thread
*/
EventHandler eventHandler = new AsyncEventHandler(20000, 1);
Eyeofcloud eyeofcloudClient;
try {
// Create an Eyeofcloud client with the default event dispatcher
eyeofcloudClient = Eyeofcloud.builder(datafile,
eventHandler).build();
} catch (ConfigParseException e) {
// Handle exception gracefully
return;
}
事件调度程序应实现一个dispatchEvent
函数,该函数接受三个参数:httpVerb
、url
和params
,所有这些都由内部类EventBuilder
创建。在此函数中,应该使用params
作为请求的主体(确保将其字符串化为 JSON)和标头中{content-type: 'application/json'}
向给定的url
请求发送POST
请求。
🚧 重要
如果使用的是自定义事件调度程序,请不要修改从云眼灰度发布(特性标帜)AB实验返回的事件负载。修改此有效负载将更改结果。
我们提供了一个异步事件调度程序 eyeofcloud-sdk-httpclient,它需要org.apache.httpcomponents:httpclient:4.5.2
,它是通过内存中队列大小和调度工作线程数参数化的。
要使用您自己的事件调度程序,请在我们的事件处理程序接口中实现dispatchEvent
方法。 dispatchEvent
接收一个 LogEvent 对象,其中包含将事件调度到 Eyeofcloud 功能实验后端所需的所有信息。事件应作为POST
请求发送到LogEvent.getEndpointUrl
,作为有效负载LogEvent.getBody
和content-type: "application/json"
标头。