• 消息协议

    消息协议

    在Riker中,单个actor系统具有定义的消息类型,即协议。 协议可以是简单类型,例如String。 简单的String协议在大多数现实世界的应用程序中都没有用,在这些应用程序中可能有多个actor,每个actor都有自己专门的消息类型要求

    任何Rust类型都可以用作消息协议,只要它是CloneSend即可。 此外,必须实现Into trait,特别是Into <ActorMsg>.

    1. enum Protocol {
    2. CreateUser(String, String), // username, password
    3. UpdateUser(String), // password
    4. DeleteUser(String), // username
    5. }
    6. impl Into<ActorMsg<Protocol>> for Protocol {
    7. fn into(self) -> ActorMsg<Protocol> {
    8. ActorMsg::User(self)
    9. }
    10. }

    这里将协议转换为所需的ActorMsg :: User变体。

    要配置Riker应用程序以使用您的消息类型,只需在模型中进行设置即可。 如果您使用riker-default crate中的默认Riker模型,则可以使用以下命令:

    1. let model: DefaultModel<Protocol> = DefaultModel::new();

    这提供了一个配置为使用Protocol enum的默认模型实例。

    如果您使用自定义模型,则可以在模型和自定义中查看如何设置消息协议。

    接下来,您将看到actor如何形成层次结构。