Akka-2.5.12学习系列(watch)

本文介绍了Akka中Actor的监控机制,包括如何watch独立Actor以及子Actor。当被监控的Actor被stop或PoisonPill停止时,监控Actor会收到Terminated信号。示例展示了如何在父Actor中监控子Actor,必须通过getContext.watch(childActorRef)来实现。此外,提供了相关pom依赖信息。
摘要由CSDN通过智能技术生成

本文用到的MyWork的源代码:Akka-2.5.12学习系列(第一个Actor)

一个 Actor a 可以监控另一个 Actor b,当b被 context stop 或被 PoisonPill 毒死后,a 会收到一个 Terminated 信号。

有两种 watch 方式:第一种是 watch 一个独立的 Actor,第二种是 watch 子 Actor

watch 一个独立的 Actor

watch 另一个独立的 Actor,这个监控 Actor 也可以是独立的专门为监控而生的。

示例:

import akka.actor.*;
import akka.event.Logging;
import akka.event.LoggingAdapter;
import cn.edu.tsinghua.akka.MyWork;
import com.typesafe.config.ConfigFactory;

/**
 * Watch Actor观察myWork actor,当myWork actor挂掉后就停止系统
 */
public class WatchAnother extends UntypedAbstractActor {
   

    LoggingAdapter logger = Logging.getLogger(getContext().system(), this);

    static public Props props(ActorRef watchedActor) {
        return Props.create(WatchAnother.class, () -> new WatchAnother(watchedActor));
    }

    /**
     * 监听一个actor,这个actor挂了,就会给WatchActor发送个Terminated信号
     * @param actorRef
     */
    public WatchAnother(ActorRef actorRef){
        getContext().watch(actorRef);
    }

    @Override
    public void onReceive(Object msg) throws InterruptedException {
        if(msg ins
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值