小编Eug*_*Loy的帖子

在AKKA中,在主管上调用关闭会阻止它监督的所有演员吗?

假设我有一个链接2个演员的主管.当我的应用程序关闭时,我想优雅地关闭这些演员.调用supervisor.shutdown()会停止所有演员还是我还需要手动停止我的演员?

格拉西亚斯

java scala actor akka akka-supervision

8
推荐指数
1
解决办法
1368
查看次数

处理Akka演员的错误

我有一个非常简单的例子,我有一个Actor(SimpleActor)通过向自己发送消息来执行周期性任务.消息在actor的构造函数中调度.在正常情况下(即没有故障)一切正常.

但是如果演员必须处理错误呢?我有另一个演员(SimpleActorWithFault).这个演员可能有错.在这种情况下,我通过抛出异常来生成一个.当故障发生时(即SimpleActorWithFault抛出异常),它会自动重启.但是,这次重启会扰乱Actor内部的调度程序,该调度程序不再作为例外.如果故障发生得足够快,就会产生更多的意外行为.

我的问题是在这种情况下处理故障的首选方法是什么?我知道我可以使用Try块来处理异常.但是,如果我扩展另一个演员,我不能在超类中放置一个演员,或者某些情况下,当我是一个例外的故障发生在演员身上.

import akka.actor.{Props, ActorLogging}
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration._
import akka.actor.Actor

case object MessageA

case object MessageToSelf


class SimpleActor extends Actor with ActorLogging {

  //schedule a message to self every second
  context.system.scheduler.schedule(0 seconds, 1 seconds, self, MessageToSelf)

  //keeps track of some internal state
  var count: Int = 0

  def receive: Receive = {
    case MessageA => {
      log.info("[SimpleActor] Got MessageA at %d".format(count))
    }
    case MessageToSelf => {
      //update state and …
Run Code Online (Sandbox Code Playgroud)

scala fault-tolerance akka error-kernel

8
推荐指数
2
解决办法
6067
查看次数

Scala中非案例类的模式匹配

让我们假设我有一个简单的第三方(即我不能修改它)类定义如下:

class Price(var value: Int)
Run Code Online (Sandbox Code Playgroud)

是否可以将此类的实例与某些模式匹配?

例如,我想实现功能:

def printPrice(price: Price) = {
    // implementation here
}
Run Code Online (Sandbox Code Playgroud)

...打印price is {some value}每个pricevalue <= 9000price is over 9000所有其他情况.

例如,调用:

printPrice(new Price(10))
printPrice(new Price(9001))
Run Code Online (Sandbox Code Playgroud)

应该打印:

price is 10
price is over 9000
Run Code Online (Sandbox Code Playgroud)

如何printPrice使用模式匹配实现?

scala pattern-matching

7
推荐指数
2
解决办法
2373
查看次数

在Play应用程序中禁用延迟加载

默认情况下,您的Play应用程序将全面打响(编译GlobalonStart调用等),你做的HTTP请求到它之后.

有没有办法禁用这个延迟加载并使Play应用程序编译代码并在应用程序进程运行后执行启动?

PS:我正在使用Play 2.3.

更新:正如Ryan所指出的,懒惰负载只发生在开发中.模式.尽管如此,我仍然需要禁用它,尽管这只与在dev中运行的应用程序相关.模式.

playframework playframework-2.3

7
推荐指数
1
解决办法
777
查看次数

恢复 docker 容器的运行参数

我经常发现自己需要重新创建容器,并对docker run最初用于容器的参数进行细微修改(例如更改已发布的端口、网络、内存量)。

现在我正在制作图像并运行它们来代替旧容器。

这工作正常,但我并不总是docker run保存原始参数,有时(特别是当有很多东西要定义时)恢复它们变得很痛苦。

有没有办法docker run从现有容器中恢复参数?

docker

7
推荐指数
2
解决办法
1055
查看次数

qt插槽currying

有没有办法咖喱qt插槽?也许有类似curryng的东西?

c++ qt currying signals-slots

6
推荐指数
1
解决办法
1133
查看次数

监督策略可以处理ConnectException吗?

如果远程演员由于断电而无法使用监督策略可以处理这种情况吗?

我编写了示例并且我关闭了远程actor系统,但似乎监督策略只考虑了远程actor一旦达到的异常.

由于我不是阿卡专家,我想知道这是否可以实现.

版:

我已经实现了对事件的订阅,这些事件表明连接中发生了错误.我仍然需要访问发件人最初发送的邮件,这样邮件就不会丢失.

scala akka akka-supervision

6
推荐指数
1
解决办法
157
查看次数

Android Studio || GDK'你好'字'|| 导入com.google.android.glass.app.Card || 无法解析符号'google'

我想用谷歌眼镜做的很简单:创建/显示谷歌玻璃的世界卡

问题是::

当我添加这个:

import com.google.android.glass.app.Card
Run Code Online (Sandbox Code Playgroud)

我明白这个:

Cannot Resolve Symbol 'google'
Run Code Online (Sandbox Code Playgroud)

我这样做:

最小和目标SDK版本:15(只有一个Glass版本,因此最小和目标SDK是相同的.)编译:Glass Development Kit Sneak Peek

并且我对gradel.build进行了更改[编译sdk版本...它是15 /更改为以下内容]

android {
    compileSdkVersion "Google Inc.:Glass Development Kit Sneak Peek:15"
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 15
    }
}
Run Code Online (Sandbox Code Playgroud)

我觉得我错过了一些简单/设置问题/不确定它是什么.

有什么建议吗?

android google-glass android-studio

6
推荐指数
3
解决办法
6626
查看次数

使用maven进行集成测试:在测试之前运行jar并在之后终止

我有一个可运行的jar,我希望在集成测试开始(on pre-integration-test)之前在一个新进程中运行,并在集成测试完成(on post-integration-test)后终止它.

我可以使用的一件事是maven-antrun-pluginexec-maven-plugin来启动新进程pre-integration-test但是如何终止呢?

也许有一个更好的解决方案,我想要实现的目标?

PS:我在Windows和Linux上都构建了我的项目,因此可移植性对我很重要.

java testing integration-testing maven

6
推荐指数
2
解决办法
5740
查看次数

使用`try`处理纯代码抛出的异常

我正在播放haskell中的异常,偶然发现了一件我无法理解的事情.

在GHCi我做:

Prelude Control.Exception> let thrower = (read "A") :: Int
Prelude Control.Exception> :{
Prelude Control.Exception| let main = do
Prelude Control.Exception|     x <- (try $ return thrower) :: IO (Either SomeException Int)
Prelude Control.Exception|     print x
Prelude Control.Exception| :}
Prelude Control.Exception> main
Run Code Online (Sandbox Code Playgroud)

这定义了thrower我的测试表达式,它会因异常而失败.

然后我定义main将表达式try包装进(将其包装到IO第一个,因为try接受IO)然后将其从IO(由...生成try)和print它展开.

到目前为止,一切看起来都很棒 - main在repl中进行评估会将异常包含在以下内容中:

Right *** Exception: Prelude.read: no parse
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试编译并执行与应用程序相同的代码:

module Main where

import Control.Exception

thrower …
Run Code Online (Sandbox Code Playgroud)

haskell exception-handling exception

6
推荐指数
2
解决办法
184
查看次数