81.3. KIE 会话池

在有大量 KIE 运行时数据和高系统活动的用例中,可能会创建 KIE 会话并经常被处理。KIE 会话的高可用性并非始终消耗大量时间,但当过渡数以百万计的时间时,流程可能会成为瓶颈并需要大量清理工作。

对于这些高容量情况,您可以使用 KIE 会话池,而不是很多单独的 KIE 会话。要使用 KIE 会话池,您可以从 KIE 容器获取 KIE 会话池,定义池中初始 KIE 会话数量,并尽可能从那个池中创建 KIE 会话:

KIE 会话池示例

// Obtain a KIE session pool from the KIE container
KieContainerSessionsPool pool = kContainer.newKieSessionsPool(10);

// Create KIE sessions from the KIE session pool
KieSession kSession = pool.newKieSession();

在这个示例中,KIE 会话池从 10 个 KIE 会话开始,但您可以指定所需的 KIE 会话数。此整数值是最初在池中创建的 KIE 会话的数量。如果运行的应用程序需要,池中 KIE 会话的数量可以动态增长超过该值。

在定义了 KIE 会话池后,在下次使用 KIE 会话池后,您下次使用 KIE 会话并在其上调用 dispose() 时,会重置 KIE 会话并推送回池,而不是销毁。

KIE 会话池通常适用于有状态 KIE 会话,但 KIE 会话池还可影响您使用多个 execute() 调用的无状态 KIE 会话。当您直接从 KIE 容器创建无状态 KIE 会话时,KIE 会话将继续为每个 execute() 调用内部创建新的 KIE 会话。相反,当您从 KIE 会话池中创建无状态 KIE 会话时,KIE 会话仅使用该池提供的特定 KIE 会话。

当使用 KIE 会话池完成时,您可以调用 shutdown() 方法以避免内存泄漏。或者,您也可以在 KIE 容器上调用 dispose() 来关闭从 KIE 容器创建的所有池。