camel [Feature Request] Message refactor

c86crjj0  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(131)

必需的先决条件

动机

从 FIPA 和 XMPP 等标准中学习,重构 Message 以使其更具可扩展性,以便适用于多代理通信。

解决方案

对代理的要求:

当代理收到他们无法识别或无法处理消息内容的消息时,应发送“不明白”。代理必须准备好接收并正确处理来自其他代理的“不明白”消息。

message 属性:

  • :message-id

此消息的唯一标识符

  • :type

消息的类型

  • :sender

表示消息发送者的标识符,即通信行为的主体名称。{角色名,角色类型}

  • :receiver

表示消息预期接收者的标识符。注意,收件人可能是一个代理名称的单个元组,或者是一个代理名称的元组。这对应于将消息广播到元组中的所有代理的行为。从实际应用的Angular 来看,这种广播的语义是向元组中的每个代理发送消息,并且发送者希望每个代理都成为消息编码在其中的消息的 CA 的接收者。例如,如果代理执行一个带有三个代理作为接收者的告知行为,那么它表示发送者希望这些代理都相信消息的内容。

  • :subject

此消息的主题

  • :content

表示消息内容;等同于表示操作的对象。{文本,图像,音频,视频,工具调用(tools,args,results)}
msg1 “content”, msg2 “content”
多用途互联网邮件扩展(MIME)

  • :reply-with

引入一个表达式,该表达式将由对此消息做出响应的代理用于识别原始消息。可以在同时发生多个对话的情况下使用此功能来跟踪对话线程。例如,如果代理 i 向代理 j 发送了一条包含以下内容的消息:
:reply-with query1,
代理 j 将回复一条包含以下内容的消息:
:in-reply-to query1.

  • :in-reply-to

[message1,message2] → 内存
表示引用此消息之前的一个操作的表达式。

  • :envelope

{时间发送:xx,时间接收:xx}
表示作为消息传输服务所见的消息信息的有用信息。此参数的内容未在规范中定义,但可能包括发送时间、接收时间、路线等。此参数的结构是一个关键字值对列表,其中每个都表示消息服务的某些方面。

  • :language

表示内容的操作的编码方案。

  • :ontology

表示用于给内容表达式中的符号赋予意义的本体。

  • :reply-by

表示指示发送代理希望收到回复的最晚时间和/或日期的表达式。

  • :protocol

{模式:多用途互联网邮件扩展(MIME)}
引入一个标识符,该标识符表示发送代理正在使用的协议。协议为解释消息提供了额外的上下文。

  • :conversation-id / thread-id

uuid
引入一个表达式,用于标识组成对话的一系列连续的交流行为。代理可以使用对话来管理其通信策略和活动。此外,对话还可以提供解释消息含义的其他上下文。

相关问题