当前位置: 首页 > 知识库问答 >
问题:

Akka持久性:删除日记中的“旧”消息

梁和颂
2023-03-14

清理快照存储区中的旧快照很容易:在每次成功的快照之后,参与者都会收到一个savesnapshotsuccess,其中包含指示其序列号的元数据,该信息可以用于构造快照snapshotselectioncriterie,然后被馈送到deletesnapshots

但是,对于持久化消息,没有与savesnapshotsuccess等效的方法。因此,不可能知道日志中“last-ish”消息的序号是什么。可以保留持久消息计数的本地缓存并对其进行快照,以用于调用deletemessages,但这太繁琐了。

附言。当然,选择用于传递到deletemessages的序号比上面提到的要复杂一点:即使有一种方法可以从日记中获取参与者的最后一条消息的序号,我们也必须担心最近三个快照失败的可能性,所以这不像仅仅使用100和50)那么容易,所以实现会更加复杂,但至少我们没有用持久化序列计数污染快照类型。

共有1个答案

王长卿
2023-03-14

您只需从持久化执行元调用LastSequencenr即可。

 类似资料:
  • 我正在寻找从经典Akka持久化迁移到Akka持久化类型。在这里找到的Lagom留档:1说“注意:从Lagom持久化(经典)迁移到Akka持久化类型时的唯一限制是需要完全关闭集群。即使所有持久数据都是兼容的,Lagom持久化(经典)和Akka持久化类型也不能共存。” 有人知道这是否适用于服务器可能知道的所有持久实体吗?例如,我使用的服务有3个独立的持久实体。我需要一次迁移所有3个,还是可以一次迁移一

  • 我尝试了一个带有MongoDb支持的akka-persistence的“Hello-World”示例,使用这个开源https://github.com/scullxbones/akka-persistence-mongo/tree/master/rxmongo/src。下面是我的代码。但是,当我运行应用程序时,我得到了ask Timeout: Akka.Pattern.AskTimeoutExce

  • 我有疑问一条消息是否会在主题中持续存在,我从这篇文章中得到了大部分答案。 但是这种情况如何呢?假设代理重新开始,一些发布者已经开始向一个主题发送消息,现在将来一些持久订户将与该主题连接,但是当前没有持久订户,因此在代理重新开始的情况下,发布者到目前为止向该主题发送的所有消息都将丢失。 我尝试了上述情况,确实所有的信息都丢失了。此外,我尝试了这种情况——我有一个活跃的持久订阅者,它能够将消息推送到主

  • 我熟悉此处定义的Akka测试方法: http://doc.akka.io/docs/akka/snapshot/scala/testing.html 我了解如何使用TestKit、TestActorRef、TestProbe等。我还了解我的核心域逻辑应该与Akka隔离提取和测试。 我的问题是关于在Akka Persistence参与者(即PersistentActor和PersistentView

  • 在kafka中,我在中将保留策略设置为3天 主题将设置为(48h)。 但是,文件夹/tmp/kafka-logs中仍然有旧数据,并且没有任何数据被删除。我等了几个小时才换了那些房产。

  • “ActiveMQ中Blob消息传递的持久性”? "我们不能使用数据库(KahaDB)来Blob消息URL吗?" “我们可以像在远程activemq服务器中一样在嵌入式代理中创建文件服务器吗?”