我是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) 我有一个在本地群集上运行良好的拓扑.但是当我尝试在生产集群上运行它时,会发生以下情况:
我带着暴风雨
风暴jar myjar.jar MyClass
Nimbus提交拓扑
但:
尽管其状态为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) 我正在使用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-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)我需要调整哪些主要参数来改善性能?
如何通过在 Cassandra 中设置单独的生存时间 (TTL) 属性来使集合的每个元素过期?
文档在这里,但我找不到示例。(https://docs.datastax.com/en/cql/3.3/cql/cql_using/useExpire.html)
akka ×3
akka-http ×3
scala ×2
akka-stream ×1
apache-storm ×1
cassandra ×1
http ×1
json ×1
properties ×1
server ×1
ttl ×1