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

测试AKKA 2.6持久性演员类型(杀戮和毒药的替代方案)

袁博
2023-03-14

逻辑很简单:

  1. 创建一个演员并发送一系列事件。
  2. 根据测试停止使用Akka.actor.kill或Akka.actor.poisonkill的演员。
  3. 再次启动执行元并测试它是否已正确恢复。

我正在将它迁移到Akka2.6和“AKKA键入”,但Kill和PoisonKill不可用。

共有1个答案

裴泰平
2023-03-14

在停止参与者方面,actorref可以在导入Akka.actor.typed.scaladsl.adapter._时使用toClassist并发送信号Akka.actor.typed.internal.poisonpill

当定义receivesignal并记录所有信号时,pill执行预期的工作,您的actor停止。

.receiveSignal {
    case (ctx, signal) =>
        ctx.log.debug("{}", signal)
        Behaviors.stopped
}

在我的情况下,首先记录了PoisonPill,然后是PostStop

 类似资料:
  • 让我们假设一个使用Akka Typed实现的应用程序有一个持久执行元。这个持久执行元作为其操作的一部分创建了瞬态(或非持久)子执行元,每个子执行元都有一个唯一的ID,这些ID是持久状态的一部分。持久执行元还需要一些与其子级通信的方式,但我们不希望持久化子级的,因为它们实际上不是状态的一部分。在恢复时,持久参与者应该基于恢复的状态重新创建它的子级。这听起来并不像是一个很不寻常的用例,我正在试图弄清楚

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

  • 我正在尝试设置一个属性,该属性将由我的功能测试中的每个方法使用。问题是它在测试之间并没有持续。 这是我的测试类: 我只希望属性在该类中的所有测试中保持不变。

  • 我正在从Hibernate 3.x升级到最新的Hibernate 5.2.0 FINAL。在我的旧代码中,我们使用了如下的条件查询。 现在,从HiberNate 5.2.0开始,createCrit的()方法已经被弃用了,可以从下面的留档中找到。 https://docs . JBoss . org/hibernate/ORM/5.2/javadocs/deprecated-list . html

  • null 函数getAndProcessData包含并行执行3个Future.Sequence。 现在,随着我对Akka的阅读越来越多,我发现使用ask会创建另一个actor Listener。问题是: 正如我们广泛使用的ask,它是否会导致系统中使用多个线程,有时可能会导致线程饥饿? 使用future.map也往往意味着不同的线程。我读到过一个线程演员的幻觉,它可以很容易地通过混合未来打破。 此

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