小编Geo*_*e C的帖子

如何在AKKA-HTTP中将未来[Option [Foo]]类传递给JSON

我是acala和akka的新手,所以这个问题可能有点傻.

我有一节课:

case class Foo(colUNO: String, colDOS: Long)
Run Code Online (Sandbox Code Playgroud)

我有一个功能:

getById() : Future[Option[Foo]]
Run Code Online (Sandbox Code Playgroud)

我试图在akka-http路线中使用它

def main(args: Array[String]) {

implicit val actorSystem = ActorSystem("system")
implicit val actorMaterializer = ActorMaterializer()

val route = pathSingleSlash {

    get {

      complete {

        val fut = getById()

        }
    }
}

Http().bindAndHandle(route,"localhost",8080)
println("server started at 8080")
Run Code Online (Sandbox Code Playgroud)

}

但错误说:

错误:(39,20)类型不匹配; 发现:scala.concurrent.Future [Option [com.cassandra.phantom.modeling.MiTabla.User]]必需:akka.http.scaladsl.marshalling.ToResponseMarshallable getById(id)

我要做什么才能归还Foo的Json?

谢谢!!


解析度:

查看:http://doc.akka.io/docs/akka-stream-and-http-experimental/2.0.3/scala/http/common/json-support.html 并添加以下代码:

import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport
import spray.json._

trait JsonSupport extends SprayJsonSupport with DefaultJsonProtocol {
  implicit val userFormat = jsonFormat2(Foo)
}
Run Code Online (Sandbox Code Playgroud)

json scala http akka akka-http

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

使用Apache Storm 1.0.0在生产群集中运行拓扑时出错,拓扑无法启动

我有一个在本地群集上运行良好的拓扑.但是当我尝试在生产集群上运行它时,会发生以下情况:

  1. 雨云起来了
  2. 风暴UI已经启动
  3. 我使用的两个工人都起来了
  4. Zookeper起来了
  5. 我带着暴风雨

    风暴jar myjar.jar MyClass

  6. Nimbus提交拓扑

  7. 拓扑和工作人员出现在风暴UI中

但:

尽管其状态为ACTIVE,但拓扑仍未启动

拓扑的日志文件未显示在工作程序中.

我在supervisor.log上的worker中有以下日志:

2016-04-15 13:18:19.831 o.a.s.d.supervisor [WARN] There was a connection problem with nimbus. #error {
 :cause jobs-rec-storm-nimbus
 :via
 [{:type java.lang.RuntimeException
   :message org.apache.storm.thrift.transport.TTransportException: java.net.UnknownHostException: jobs-rec-storm-nimbus
   :at [org.apache.storm.security.auth.TBackoffConnect retryNext TBackoffConnect.java 64]}
  {:type org.apache.storm.thrift.transport.TTransportException
   :message java.net.UnknownHostException: jobs-rec-storm-nimbus
   :at [org.apache.storm.thrift.transport.TSocket open TSocket.java 226]}
  {:type java.net.UnknownHostException
   :message jobs-rec-storm-nimbus
   :at [java.net.AbstractPlainSocketImpl connect AbstractPlainSocketImpl.java 184]}]
 :trace
 [[java.net.AbstractPlainSocketImpl connect AbstractPlainSocketImpl.java 184]
  [java.net.SocksSocketImpl connect SocksSocketImpl.java 392]
  [java.net.Socket connect Socket.java 589] …
Run Code Online (Sandbox Code Playgroud)

properties production-environment apache-storm

5
推荐指数
2
解决办法
2308
查看次数

什么网络服务器使用akka akka-http,我该如何获得它的版本?

我正在使用akka和akka-http 2.4.2,我正在尝试了解它们的内部组件.

akka和akka-http用什么来启动休息网络服务?
它使用嵌入式Web服务?(像Jetty?)
我如何获得它的版本?

我开始运行其余网络服务的代码是:

implicit val actorSystem = ActorSystem("system")
implicit val actorMaterializer = ActorMaterializer()

val route: Route = {
      blablabla ...
}

val bind = Http().bindAndHandle(route, "0.0.0.0", 8080)
Run Code Online (Sandbox Code Playgroud)

谢谢.

akka akka-http server

4
推荐指数
1
解决办法
693
查看次数

负载平衡akka-http


我使用的是akka-http,我的build.sbt配置是:

scalaVersion := "2.11.7"
libraryDependencies += "com.typesafe.akka" % "akka-actor_2.11" % "2.4.2"
libraryDependencies += "com.typesafe.akka" % "akka-http-experimental_2.11" % "2.4.2"
libraryDependencies += "com.typesafe.akka" % "akka-http-spray-json-experimental_2.11" % "2.4.2"
libraryDependencies += "com.typesafe.akka" % "akka-slf4j_2.11" % "2.4.2"
Run Code Online (Sandbox Code Playgroud)

我只暴露一个简单的REST api只有一个GET url
foo是一个返回Future的函数

implicit val actorSystem = ActorSystem("system", config)
implicit val actorMaterializer = ActorMaterializer()

val route: Route = {
  get {
    path("foo") {
      complete { foo }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Web服务预计会有很多调用,我想在发生故障时使服务变为冗余,因此我希望同时运行两个实例来处理所有请求.

1)在akka/akka-http中,有两个同时处理请求的Web服务的最佳方法是什么?有外部负载均衡器或者有一些魔法(我不知道)?

2)我需要调整哪些主要参数来改善性能?

scala akka akka-stream akka-http

4
推荐指数
1
解决办法
1472
查看次数

如何通过在 Cassandra 中设置单独的生存时间 (TTL) 属性来使集合的每个元素过期?

如何通过在 Cassandra 中设置单独的生存时间 (TTL) 属性来使集合的每个元素过期?

文档在这里,但我找不到示例。(https://docs.datastax.com/en/cql/3.3/cql/cql_using/useExpire.html

ttl cassandra

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