小编alm*_*dar的帖子

Akka中聚类和远程处理的区别

我在一个JVM上用Akka开发了我的应用程序.现在我想在多台机器上分配工作负载.我开始阅读文档并感到困惑.

有两种方法可以通过聚类和远程处理来分发Akka应用程序.我没有区分这两者.如果我理解正确两者都相互排除,因为在配置中需要使用不同的提供者作为参与者:

 akka.remote.RemoteActorRefProvider
 akka.cluster.ClusterActorRefProvider
Run Code Online (Sandbox Code Playgroud)

那么用例是什么?当我选择一个而不是另一个?

也许聚类就像遥控器的超集,或者反过来可能是另一种方式?

akka akka-cluster

30
推荐指数
2
解决办法
3933
查看次数

使用for-comprehension,在Scala中尝试和序列

假设你有很多方法:

def foo() : Try[Seq[String]]
def bar(s:String) : Try[String]
Run Code Online (Sandbox Code Playgroud)

你想做一个for-comprhension:

for {
  list <- foo
  item <- list
  result <- bar(item)
} yield result
Run Code Online (Sandbox Code Playgroud)

当然这不会编译,因为在此上下文中Seq不能与Try一起使用.

任何人都有一个很好的解决方案如何写这个干净而不会分成两个单独的?

我在三分之一的时间里遇到过这种语法问题,并认为现在是时候问这个了.

scala for-comprehension

13
推荐指数
2
解决办法
5755
查看次数

传出连接流已关闭

我有一个行为的演员:

def receive: Receive = {
    case Info(message) =>
      val res = send("INFO:"  + message)
      installAckHook(res)
    case Warning(message) =>
      val res = send("WARNING:"  + message)
      installAckHook(res)
    case Error(message) =>
      val res = send("ERROR:" + message)
      installAckHook(res)
  }

 private def installAckHook[T](fut: Future[T]): Unit = {
    val answerTo = sender()

    fut.onComplete {
      case Success(_) => answerTo ! "OK"
      case Failure(ex) => answerTo ! ex
    }
  }


  private def send(message: String): Future[HttpResponse] = {
    import context.system
    val payload: Payload = Payload(text = message, …
Run Code Online (Sandbox Code Playgroud)

akka-http

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

折叠在NonEmptyList上

我正在尝试使用猫库,但我很难在导入和创建的东西之间导航.我的问题如下:

sealed trait Checks
case class CheckViolation(id: Long, msg: String) extends Checks
case class ChecksPassed(ids: Seq[Long]) extends Checks
Run Code Online (Sandbox Code Playgroud)

这是我想要使用的数据结构.每个违规都应该作为具有msg的对象保存,传递的检查可以聚合为仅保存id.

object BusinessRuleSetValidation extends App {

  type BRValidationResult = Validated[NonEmptyList[CheckViolation], ChecksPassed]

  def run(): BRValidationResult = {

    implicit val monoidChecksPassed = new Monoid[ChecksPassed] {
      override def empty: ChecksPassed = ChecksPassed(Seq())

      override def combine(x: ChecksPassed, y: ChecksPassed): ChecksPassed = ChecksPassed(x.ids ++ y.ids)
    }



    val check1: BRValidationResult = valid(ChecksPassed(2L))
    val check2: BRValidationResult = invalidNel(CheckViolation(1, "This check was violated"))
    val check3: BRValidationResult = invalidNel(CheckViolation(2, "This is …
Run Code Online (Sandbox Code Playgroud)

scala scala-cats

5
推荐指数
1
解决办法
708
查看次数

使用'type'关键字和路径相关类型覆盖类型

假设我有一个像这样的代码:

trait  Holder  {
  type Value
  def put(v:Value)
}

class JsonHolder extends Holder {
  override type Value = String
  def put(v: JsonHolder.this.Value): Unit = {}
}

class XmlHolder extends Holder {
  override type Value = String
  def put(v: XmlHolder.this.Value): Unit = {}
}

object Foo {
  def main(args: Array[String]) {
    val jsonHolder = new JsonHolder
    val xmlHodler = new XmlHolder
    val valueOfJson = new jsonHolder.Value("AAA")
    val valueOfXml = new xmlHodler.Value("AAA")
    jsonHolder.put(valueOfXml)
  }
}
Run Code Online (Sandbox Code Playgroud)

我不明白这为什么编译.jsonHolder.put(valueOfXml)不应该出现类型错误吗?

如果我改变

type Value
Run Code Online (Sandbox Code Playgroud)

这样的事情:

case class …
Run Code Online (Sandbox Code Playgroud)

types scala

2
推荐指数
1
解决办法
164
查看次数