所有消息的Akka参与者处理程序

所有消息的Akka参与者处理程序,akka,actor,Akka,Actor,我需要为参与者收到的所有消息添加处理程序(经典)。如果我设置match(ActorBaseRequest.class),它不会处理特定的消息,那么有没有办法在akka中实现这一点 Receive operationalBehavior = receiveBuilder() //.matchAnyMessage handler .match( Start.class, request ->

我需要为参与者收到的所有消息添加处理程序(经典)。如果我设置match(ActorBaseRequest.class),它不会处理特定的消息,那么有没有办法在akka中实现这一点

Receive operationalBehavior =
    receiveBuilder()
        //.matchAnyMessage handler
        .match(
            Start.class,
            request ->
                start())
        .match(
            Stop.class,
            request ->
                stop())
        .build();

我能想到的最简单的方法就是引入你自己的
AbstractBehavior
子类,你可以覆盖
createReceiveBuilder()
,返回一个带有预定义消息处理的生成器。

你能澄清你的要求吗?现在还不清楚您是否希望在处理特定消息之前运行装饰,或者您是否希望实现全面覆盖,这样您就不必专门处理每条消息。是的,我希望为每条消息运行重复的处理程序,以及为特定类型的消息运行的处理程序,这两个start/stop命令都会运行,即使有它们的handler,我也能想到一种在Scala中干净地实现这一点的方法,但由于Java实际上没有分部函数的概念,在Java中,您可能能做的最好的事情就是在开始/停止处理程序中手动插入对公共函数的调用。您不能在一个函数中抽象出公共逻辑,该函数将与matchAny条件一起从开始和结束处理程序调用吗?是,这是一个解决方案,但我们有很多消息处理程序,因此需要在所有位置添加它,更重要的是,它容易出错:/