如何在F#Akka.NET Actor中存储状态?

伊恩

在C#中,ReceiveActor我可以将状态作为类中的私有字段。如何使用F#API以惯用的方式执行此操作?

这是一个好主意吗?还有其他选择吗?

let handleMessage (mailbox: Actor<'a>) msg =
    let mutable i = 1
    match msg with
    | Some x -> i <- i + x
    | None -> ()
棕色

您提出的方法完全适合作为在参与者中存储状态的一种方式。任何时候仅处理1条消息的并发性约束意味着,由于共享内存位置上的争用,不可能进入无效状态。

但是,这不是最惯用的选择。Akka.Net提供了一个F#API,以与F#MailboxProcessors类似的方式与actor一起工作。在这种情况下,您将actor定义为尾递归函数,该函数以某种新状态调用自身。这是一个例子

spawn system "hello" <|
    fun mailbox ->
        let rec loop state =
            actor {
                let! msg = mailbox.Receive ()
                printfn "Received %A. Now received %s messages" msg state
                return! loop (state + 1) //Increment a counter for the number of times the actor has received a message
            }
        loop 0

有关Akka.Net F#API的完整文档,请参见http://getakka.net/wiki/FSharp%20API

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Akka actor中累积状态的正确模式

来自分类Dev

使用Akka.NET的Actor模型:如何防止向死亡的actor发送消息

来自分类Dev

如何在Akka Actor中实现receive()

来自分类Dev

如何在EWL中存储每个请求状态?

来自分类Dev

如何在.net中为Google云存储签名URL

来自分类Dev

ASP.NET中的Akka.NET actor系统

来自分类Dev

如何在F#中别名.NET函数

来自分类Dev

如何对F#akka.net中收到的消息类型进行模式匹配?

来自分类Dev

如何在部署在不同群集节点上的两个相同参与者之间保持状态?(akka.net)

来自分类Dev

如何在akka actor中使用akka-http cachedHostConnectionPool?

来自分类Dev

从C#库中使用Akka.Net actor调用F#库会导致TypeInitializationException

来自分类Dev

如何在Akka.NET中使用动态名称远程部署actor

来自分类Dev

如何在SQLite.net中存储对象列表?

来自分类Dev

如何确保在编译时将消息发送到Akka.net中合适的Actor?

来自分类Dev

如何在无状态(.NET状态机库)中记录状态转换

来自分类Dev

如何对Akka.Net Actor状态进行单元测试(使用Begin())

来自分类Dev

如何在react-redux中更新存储状态?

来自分类Dev

Akka actor从数据库读取状态

来自分类Dev

如何在Akka.NET中成功设置简单的群集单例

来自分类Dev

如何在Akka Actor中模拟HTTP服务

来自分类Dev

如何在VSCode中包含F#的Akka.net框架

来自分类Dev

如何对F#akka.net中收到的消息类型进行模式匹配?

来自分类Dev

您是否应该避免Akka Actor中的易变状态?

来自分类Dev

Akka actor从数据库读取状态

来自分类Dev

如何在f#中创建akka.net路由器?

来自分类Dev

使用ConsistentHashmapping时,如何在运行时将actor添加到akka.net中的组或池中?

来自分类Dev

如何获取整个 Akka.net 集群的更新状态?

来自分类Dev

如何在 .NET 中持续检查串行端口的状态?

来自分类Dev

如何在 .NET Core 2.1 WebApi 中存储数据?

Related 相关文章

  1. 1

    在Akka actor中累积状态的正确模式

  2. 2

    使用Akka.NET的Actor模型:如何防止向死亡的actor发送消息

  3. 3

    如何在Akka Actor中实现receive()

  4. 4

    如何在EWL中存储每个请求状态?

  5. 5

    如何在.net中为Google云存储签名URL

  6. 6

    ASP.NET中的Akka.NET actor系统

  7. 7

    如何在F#中别名.NET函数

  8. 8

    如何对F#akka.net中收到的消息类型进行模式匹配?

  9. 9

    如何在部署在不同群集节点上的两个相同参与者之间保持状态?(akka.net)

  10. 10

    如何在akka actor中使用akka-http cachedHostConnectionPool?

  11. 11

    从C#库中使用Akka.Net actor调用F#库会导致TypeInitializationException

  12. 12

    如何在Akka.NET中使用动态名称远程部署actor

  13. 13

    如何在SQLite.net中存储对象列表?

  14. 14

    如何确保在编译时将消息发送到Akka.net中合适的Actor?

  15. 15

    如何在无状态(.NET状态机库)中记录状态转换

  16. 16

    如何对Akka.Net Actor状态进行单元测试(使用Begin())

  17. 17

    如何在react-redux中更新存储状态?

  18. 18

    Akka actor从数据库读取状态

  19. 19

    如何在Akka.NET中成功设置简单的群集单例

  20. 20

    如何在Akka Actor中模拟HTTP服务

  21. 21

    如何在VSCode中包含F#的Akka.net框架

  22. 22

    如何对F#akka.net中收到的消息类型进行模式匹配?

  23. 23

    您是否应该避免Akka Actor中的易变状态?

  24. 24

    Akka actor从数据库读取状态

  25. 25

    如何在f#中创建akka.net路由器?

  26. 26

    使用ConsistentHashmapping时,如何在运行时将actor添加到akka.net中的组或池中?

  27. 27

    如何获取整个 Akka.net 集群的更新状态?

  28. 28

    如何在 .NET 中持续检查串行端口的状态?

  29. 29

    如何在 .NET Core 2.1 WebApi 中存储数据?

热门标签

归档