代理身份和生命周期#
代理运行时管理代理的身份和生命周期。应用程序不直接创建代理,而是向代理实例注册一个带有工厂函数的代理类型。在本节中,我们将解释运行时如何识别和创建代理。
代理 ID#
代理 ID 唯一标识代理运行时(包括分布式运行时)中的代理实例。它是用于接收消息的代理实例的“地址”。它有两个组成部分:代理类型和代理键。
注意
代理 ID = (代理类型,代理键)
代理类型不是代理类。它将代理与特定的工厂函数关联,该函数生成相同代理类型的代理实例。例如,不同的工厂函数可以生成相同的代理类,但具有不同的构造函数参数。代理键是给定代理类型的实例标识符。代理 ID 可以转换为字符串和从字符串转换。此字符串的格式为
注意
Agent_Type/Agent_Key
如果类型和键仅包含字母数字字符 (a-z) 和 (0-9) 或下划线 (_),则它们被认为是有效的。有效的标识符不能以数字开头,也不能包含任何空格。
在多代理应用程序中,代理类型通常由应用程序直接定义,即在应用程序代码中定义。另一方面,代理键通常根据传递给代理的消息生成,即由应用程序数据定义。
例如,运行时已注册代理类型 "code_reviewer"
,并使用一个生成执行代码审查的代理实例的工厂函数。每个代码审查请求都有一个唯一的 ID review_request_id
来标记专用会话。在这种情况下,每个请求都可以由具有代理 ID ("code_reviewer", review_request_id)
的新实例处理。
代理生命周期#
当运行时根据代理实例的 ID 向其传递消息时,它要么获取该实例,要么在实例不存在时创建它。
运行时还负责“调入”或“调出”代理实例,以节省资源并平衡多台机器上的负载。这尚未实现。