首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何启动akka persistent actor,保证首先收到特定的消息?

如何启动akka persistent actor,保证首先收到特定的消息?
EN

Stack Overflow用户
提问于 2015-03-31 23:38:59
回答 1查看 295关注 0票数 0

我想首先发送一个消息案例类SetConfig(config: String),并确保在持久化和应用SetConfig之前没有处理其他消息。

实现这一目标的最佳实践是什么?

EN

回答 1

Stack Overflow用户

发布于 2015-04-01 10:46:13

我会和PersistentActor一起使用Akka FSM

您可以使用以下两种状态:

代码语言:javascript
复制
sealed trait State
case object Idle extends State
case object Active extends State

这些数据如下:

代码语言:javascript
复制
sealed trait Data
case object Uninitialized extends Data
final case class Config(config: String) extends Data

您的参与者将扩展FSM[State, Data],并将:

代码语言:javascript
复制
startWith(Idle, Uninitialized)

然后,您可以说,只有在使用Idle时才接受SetConfig消息

代码语言:javascript
复制
when(Idle) {
  case Event(SetConfig(conf), Uninitialized) =>
    goto(Active) using Config(conf)
}

一旦您转换到Active,您就可以通过以下方式接收其他消息:

代码语言:javascript
复制
when(Active) {
  case Event(...

// don't forget to start it up in initial state with:
initialize()

最后,在状态转换中,您可以使用常规Akka持久化模式来持久化状态。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29372655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档