akka java ask_scala – 何时在Akka中使用Ask模式

我开始学习Akka,在许多官方例子中,我看到使用tell模式实现了请求 – 响应.即在工人完成工作后,他将结果作为新消息发送给发件人.例如,在

this Pi近似官方教程中展示了如何设计应用程序,其中Master向工作人员发送一些工作,然后等待结果作为另一条消息.

主码:

def receive = {

case Calculate ⇒

for (i ← 0 until nrOfMessages) workerRouter ! Work(i * nrOfElements,nrOfElements)

case Result(value) ⇒

pi += value

nrOfResults += 1

if (nrOfResults == nrOfMessages) {

// Send the result to the listener

listener ! PiApproximation(pi,duration = (System.currentTimeMillis - start).millis)

// Stops this actor and all its supervised children

context.stop(self)

}

}

工人代码:

def receive = {

case Work(start,nrOfElements) ⇒

sender ! Result(calculatePiFor(start,nrOfElements)) // perform the work

}

但我想知道为什么这个例子没有使用ask模式?在这里使用ask模式有什么问题?

如果可以在这里使用ask模式,那么我还有另一个问题:如何在完成工作后停止所有工人演员?

>我的工作人员应该向自己发送PoisonPill消息吗?

>或者应该是大师演员广播(PoisonPill)?

>还是有另一种更优雅的方式?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值