Akka两个receiveBuilder在同一个类中

jk9hmnmh  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(160)

使用遗留代码,在扩展为BaseActor的类中,有两个入口点用于处理如下消息:

private Receive active = receiveBuilder().matchAny((message) -> { 

 if(message instanceof String){
    some code
   } else if(...) {
    //some code} else {
    //some code}
   }

以及该接收器:

@Override
    public Receive createReceive() {

        return receiveBuilder().matchAny((message) -> {
          if(message instanceof String){
    some code
   } else if(...) {
    //some code} else {
    //some code}
   }
         }

我知道有类型化的和非类型化的参与者,但是当进入active和createReceive时会很混乱;当在本地测试时,总是进入createReceive,在服务器上,它进入active如果只有声明createReceive并且没有激活,它将使用createReceive什么逻辑在这里起作用,或者我可以在哪里找到它文档已检查doc.akka.io,但仍然不清楚

pkln4tw6

pkln4tw61#

Receive本身不执行任何操作:它只是类模式匹配周围的Java胶水。您可以从createReceive()方法(actors初始模式匹配消息循环)返回Receive,也可以在getContext.comes()调用中返回,然后用新的模式匹配消息循环替换当前活动的模式匹配消息循环。
以上描述https://doc.akka.io/docs/akka/current/actors.html

相关问题