Class ThreadRoutingContext
java.lang.Object
com.bytedesk.service.routing_strategy.ThreadRoutingContext
线程路由上下文 - 策略模式实现
功能: 1. 管理不同类型线程的路由策略 2. 根据线程类型自动选择合适的策略处理线程创建 3. 支持动态策略注册和查找
策略命名规范: - 策略Bean名称:{threadType}ThreadStrategy (如:agentThreadStrategy) - 策略类名:{ThreadType}ThreadRoutingStrategy (如:AgentThreadRoutingStrategy)
支持的线程类型: - AGENT: 一对一客服线程 - WORKGROUP: 工作组客服线程 - ROBOT: 机器人线程 - WORKFLOW: 工作流线程 - UNIFIED: 统一客服入口线程
- Since:
- 1.0.0
- Author:
- jackning 270580156@qq.com
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final org.springframework.context.ApplicationContext
Spring应用上下文,用于动态获取策略Beanprivate final Map<ThreadTypeEnum,
AbstractThreadRoutingStrategy> 策略映射表 - 线程类型到策略的映射 -
Constructor Summary
ConstructorsConstructorDescriptionThreadRoutingContext
(List<AbstractThreadRoutingStrategy> strategies, org.springframework.context.ApplicationContext applicationContext) 构造函数 - 初始化策略映射 -
Method Summary
Modifier and TypeMethodDescriptioncreateCsThread
(VisitorRequest visitorRequest) 创建客服线程的主要入口方法private ThreadTypeEnum
extractTypeFromBeanName
(String beanName) 从Bean名称提取线程类型private String
根据线程类型生成Bean名称private String
getBeanName
(AbstractThreadRoutingStrategy strategy) 获取策略的Bean名称getStrategy
(ThreadTypeEnum type) 获取指定类型的策略获取所有支持的线程类型private void
initializeStrategies
(List<AbstractThreadRoutingStrategy> strategies) 初始化策略映射boolean
isSupported
(ThreadTypeEnum type) 检查是否支持指定的线程类型private void
记录已注册的策略private void
通过Bean名称注册遗漏的策略private void
注册单个策略
-
Field Details
-
strategyMap
策略映射表 - 线程类型到策略的映射 -
applicationContext
private final org.springframework.context.ApplicationContext applicationContextSpring应用上下文,用于动态获取策略Bean
-
-
Constructor Details
-
ThreadRoutingContext
public ThreadRoutingContext(List<AbstractThreadRoutingStrategy> strategies, org.springframework.context.ApplicationContext applicationContext) 构造函数 - 初始化策略映射- Parameters:
strategies
- 所有AbstractThreadRoutingStrategy实现类的列表applicationContext
- Spring应用上下文
-
-
Method Details
-
createCsThread
创建客服线程的主要入口方法- Parameters:
visitorRequest
- 访客请求信息- Returns:
- 消息协议对象
- Throws:
IllegalArgumentException
- 当线程类型不支持时
-
getStrategy
获取指定类型的策略- Parameters:
type
- 线程类型- Returns:
- 对应的策略实现,如果不存在则返回null
-
isSupported
检查是否支持指定的线程类型- Parameters:
type
- 线程类型- Returns:
- 如果支持返回true,否则返回false
-
getSupportedTypes
获取所有支持的线程类型- Returns:
- 支持的线程类型集合
-
initializeStrategies
初始化策略映射- Parameters:
strategies
- 策略列表
-
registerStrategy
注册单个策略- Parameters:
strategy
- 策略实例
-
registerMissingStrategiesByBeanName
private void registerMissingStrategiesByBeanName()通过Bean名称注册遗漏的策略 -
getBeanName
获取策略的Bean名称- Parameters:
strategy
- 策略实例- Returns:
- Bean名称,如果获取失败返回类名的首字母小写形式
-
extractTypeFromBeanName
从Bean名称提取线程类型- Parameters:
beanName
- Bean名称- Returns:
- 线程类型,如果无法提取则返回null
-
generateBeanName
根据线程类型生成Bean名称- Parameters:
type
- 线程类型- Returns:
- Bean名称
-
logRegisteredStrategies
private void logRegisteredStrategies()记录已注册的策略
-