akka-persistence note

Recovery

默认下,一个persistent acotr在启动时会自动recover,在重启的时候回放journaled messages. 当在回放message时,被送到persistent actor的新message不会被干扰. 要等recovery完成时,新的message才会被接收到persistent actor.

默认persistent actor会被恢复到最新的状态,如果想恢复到过去的状态,使用upper squence number bounds.

override def preStart() {
  self ! Recover(toSequenceNr = 457L)
}
时间: 2024-10-11 20:01:02

akka-persistence note的相关文章

怎样在 Akka Persistence 中实现分页查询

在 Akka Persistence 中,数据都缓存在服务内存(状态),后端存储的都是一些持久化的事件日志,没法使用类似 SQL 一样的 DSL 来进行分页查询.利用 Akka Streams 和 Actor 我们可以通过编码的方式来实现分页查询的效果,而且这个分页查询还是分步式并行的…… EventSourcedBehavior Akka Persistence的EventSourcedBehavior里实现了CQRS模型,通过commandHandler与eventHandler解耦了命令处

Scalable, Distributed Systems Using Akka, Spring Boot, DDD, and Java--转

原文地址:https://dzone.com/articles/scalable-distributed-systems-using-akka-spring-boot-ddd-and-java When data that needs to be processed grows large and can’t be contained within a single JVM, AKKA clusters provides features to build such highly scalabl

Akka(15): 持久化模式:AtLeastOnceDelivery-消息保证送达模式

消息保证送达是指消息发送方保证在任何情况下都会至少一次确定的消息送达.AtleastOnceDelivery是一个独立的trait,主要作用是对不确定已送达的消息进行补发,这是一种自动的操作,无需用户干预.既然涉及到消息的补发,就不可避免地影响发送方和接收方之间消息传递的顺序.接收方重复收到相同的消息等问题,这些用户必须加以关注.从另一个方面,AtleastOnceDelivery模式保证了强韧性Actor系统的不丢失消息,这项要求可能是一些系统的核心要求. AtleastOnceDeliver

akka入门-对处理器状态进行持久化

该话题涉及几个概念: 处理器.信道.事件源.日志.状态. 消息可以持久化,通常当前的状态保存在内存中(内存镜像),而事件源机制可以通过重播接收到的消息(在应用程序正常启动或崩溃后)恢复当前(或历史)的状态. Eventsourced 实现了预写日志(write-ahead log ,WAL)用于跟踪一个Actor 所接收消息,并通过回放记录的消息来恢复其状态. 处理器是一个有状态的Actor,它将收到的消息记录在日志里(持久化). 1.创建处理器状态对象 import java.io.Seria

akka入门-基于信道进行消息可靠传输

程序的演示场景是:处理器发送命令,接收者接收到消息后进行处理并且对发送方发送消息确认表明已经成功收到消息.如果没有发送确认则表明该消息没有被接收并正确处理.失败消息会到达死信箱,系统下次启动时后继续发送死信箱中的发送失败的消息. 1.创建信道回复命令对象 import com.center.akka.simple.command.Command; public class ChannelReply { private Command command; private long sequenceN

Akka(16): 持久化模式:PersistentFSM-可以自动修复的状态机器

前面我们讨论过FSM,一种专门为维护内部状态而设计的Actor,它的特点是一套特殊的DSL能很方便地进行状态转换.FSM的状态转换模式特别适合对应现实中的业务流程,因为它那套DSL可以更形象的描述业务功能.为了实现FSM的可用性,就必须为FSM再增加自我修复能力,PersistentFSM是FSM和PersistentActor的合并,是在状态机器模式的基础上再增加了状态转变事件的持久化,从而实现内部状态的自我修复功能的.在FSM结构基础上,PersistentFSM又增加了领域事件(domai

Akka(12): 分布式运算:Cluster-Singleton-让运算在集群节点中自动转移

在很多应用场景中都会出现在系统中需要某类Actor的唯一实例(only instance).这个实例在集群环境中可能在任何一个节点上,但保证它是唯一的.Akka的Cluster-Singleton提供对这种Singleton Actor模式的支持,能做到当这个实例所在节点出现问题需要脱离集群时自动在另一个节点上构建一个同样的Actor,并重新转交控制.当然,由于涉及了一个新构建的Actor,内部状态会在这个过程中丢失.Single-Actor的主要应用包括某种对外部只能支持一个接入的程序接口,或

使用Akka持久化——持久化与快照

前言 对于java web而言,一个用户的HTTP请求最终会转换为一条java线程处理.HTTP本身是无状态的,具体的请求逻辑一般也是无状态的.如果进程奔溃或者系统宕机,用户会发觉当前网页不可用之类的错误.虽然会影响一些用户体验,但是只要服务重启了,用户依然可以完成他的请求并满足其需要.但是有些情况下则势必会造成混乱甚至恐慌,例如跨行转账.用户从自己A银行的账户转账1万元至自己在B银行的账户,如果转出的动作成功了,但是转入却失败了,用户的心情是可想而知的,自己的财产不翼而飞了!一种解决的方式是引

akka cluster 初体验

cluster 配置 akka { actor { provider = "akka.cluster.ClusterActorRefProvider" } remote { log-remote-lifecycle-events = off enabled-transports = ["akka.remote.netty.tcp"] netty.tcp { hostname = "127.0.0.1" port = 0 } } cluster {

微服务框架Lagom介绍之一

背景 Lagom是JAVA系下响应式 微服务框架,在阅读本文之前请先阅读微服务架构设计,Lagom与其他微服务框架相比,与众不同的特性包括: 目前,大多数已有的微服务框架关注于简化单个微服务的构建--这是比较容易的一部分内容.Lagom将其扩展到了微服务所构成的系统,这是大型的系统--也是较为困难的一部分内容,因为在这里我们会面临到分布式系统的复杂性. 通信默认是异步的--基于消息和流--但是,如果需要的话,也考虑到了使用其他的方案,如同步的REST. 持久化默认是基于事件的--使用事件溯源Ev