使用遗留代码,在扩展为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,但仍然不清楚
1条答案
按热度按时间pkln4tw61#
Receive本身不执行任何操作:它只是类模式匹配周围的Java胶水。您可以从createReceive()方法(actors初始模式匹配消息循环)返回Receive,也可以在getContext.comes()调用中返回,然后用新的模式匹配消息循环替换当前活动的模式匹配消息循环。
以上描述https://doc.akka.io/docs/akka/current/actors.html