问题标签 [spray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9443 浏览

scala - 使用喷雾发送带有json的帖子?

抱歉,我无法完成这项工作:我需要在帖子中添加一些 json,因此请遵循文档:http ://spray.io/documentation/1.1-M8/spray-httpx/request-building/ :

...

它永远不会编译:

0 投票
1 回答
1534 浏览

scala - 我的路线中的 NullPointerException

无法弄清楚这一点,但我的路线得到了以下堆栈跟踪:

[错误] [09/06/2013 17:08:00.019] [example-akka.actor.default-dispatcher-5] [akka://example/user/$a] 处理请求 HttpRequest(GET,/ user/12345abcd?service=YT,List(Host: localhost:8080, Accept: /, User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8x zlib/1.2.5),EmptyEntity,HTTP/1.1) java.lang.NullPointerException at spray。 routing.directives.BasicDirectives$$anonfun$mapRequestContext$1$$anonfun$apply$1.apply(BasicDirectives.scala:30) at spray.routing.directives.BasicDirectives$$anonfun$mapRequestContext$1$$anonfun$apply$1.apply(BasicDirectives .scala:30) at spray.routing.directives.ExecutionDirectives$$anonfun$handleExceptions$1$$anonfun$apply$2.apply(ExecutionDirectives.scala:34) at spray.routing.directives.ExecutionDirectives$$anonfun$handleExceptions$1$$ anonfun$apply$2.apply(ExecutionDirectives.scala:32) at spray.routing.HttpServiceBase$class.runSealedRoute$1(HttpService.scala:36) at spray.routing.HttpServiceBase$$anonfun$runRoute$1。applyOrElse(HttpService.scala:46) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498) at akka.actor.ActorCell.invoke(ActorCell.scala:456) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala :237) at akka.dispatch.Mailbox.run(Mailbox.scala:219) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java: 260) 在 scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) 在 scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.run(ForkJoinWorkerThread) 的 scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) .java:107)在akka.dispatch.Mailbox.run(Mailbox.scala:219) 在akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237) 调用(ActorCell.scala:456) 在akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher .scala:386) 在 scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 在 scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 在 scala.concurrent.forkjoin.ForkJoinPool。 runWorker(ForkJoinPool.java:1979) 在 scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)在akka.dispatch.Mailbox.run(Mailbox.scala:219) 在akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237) 调用(ActorCell.scala:456) 在akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher .scala:386) 在 scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 在 scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 在 scala.concurrent.forkjoin.ForkJoinPool。 runWorker(ForkJoinPool.java:1979) 在 scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)386) 在 scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 在 scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool) 的 scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) .java:1979) 在 scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)386) 在 scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 在 scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool) 的 scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) .java:1979) 在 scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

我的路线如下所示:

我提出的要求是:

卷曲http://server.com/user/12345abcd/link?service=YT

有什么看起来很明显的问题吗?

0 投票
2 回答
322 浏览

mongodb - 调试akka中丢失的消息

我目前有以下架构:

负载(具有用于负载测试的基本接口的播放应用程序)-> 网关(具有用于传入消息的 REST 接口的喷雾应用程序)-> 处理器(与 MongoDB 一起使用的 akka 应用程序)-> MongoDB

只要我推送的消息数量很少,一切正常。但是,当我尝试推送 10000 个事件时,最终将在 MongoDB 作为文档结束,它会在随机位置停止,例如在 742 消息或 982 消息上,之后什么也不做。

调试这种情况的最佳方法是什么?在负载方面,我只是在努力推动 REST 服务:

然后在workerRouter

在喷雾方面:

在处理器方面,它基本上只是插入到集合中。关于从哪里开始有什么建议吗?

更新:我尝试将创建消息的逻辑移至 Gatewat,执行 1 到 10000 的循环,它工作得很好。但是,如果在管道中涉及喷射和播放,它会中断和随机位置。在这种情况下如何调试有什么建议吗?

0 投票
1 回答
2591 浏览

json - 将自定义案例类的客户端编组喷射到 JSON

我有以下暗示:

它适用于 Spray 路由器,我通常可以将对象解组为 StartObj.Start(它将字符串和 sys 和数据作为输入参数)

现在我正在尝试编写负载测试并使用喷雾客户端执行 JSON 请求。不幸的是,它不想接受我的对象作为输入参数,错误:

[错误] Load.scala:85: 找不到类型>spray.httpx.marshalling.Marshaller[models.StartObj.Start] [错误] pipeline(Post(serverHost, newUser)) [错误] ^

我开始创建一个可以解决此问题的编组器:

但是在这里它抱怨 value 不是受支持的类型。它只需要字节数组或字符串。我需要字符串但采用 Json 格式,我应该如何编写这个编组器才能正确解决问题?

谢谢!

0 投票
1 回答
360 浏览

spray - 序列化模板化容器类型

我已经为此苦苦挣扎了几个小时。我希望有人可以帮助我了解问题所在。

Spray-JSON 这里有一个测试用例

https://github.com/spray/spray-json/blob/master/src/test/scala/spray/json/AdditionalFormatsSpec.scala

这显示了如何序列化容器类型。我试图让这个适应我的情况。

不幸的是,当我在这里尝试使用它时

我遇到了这个错误

我也有所有正确的进口。

我很好奇问题可能出在哪里。提前感谢帮助。

0 投票
1 回答
322 浏览

scala - 更新 akka 集群入口点数据

我正在开发一个使用 Akka 集群的系统。我面临的困境是如何更新入口点的数据。我有以下结构:

[负载均衡器] -> [入口点](喷雾供电)-> [工人]

在入口点上,我需要保留一个允许访问数据的用户列表,换句话说,我需要保留一个列表,比如说电子邮件。但是,当新用户被授权或删除时,必须经常更新此列表。

解决这个问题的最佳方法是什么?我正在考虑将这个电子邮件/ID 容器切换到一个可变容器,但问题是系统是否会在事件处理中锁定这些数据以及这如何影响性能。

任何建议都会很棒!

更新: - 新用户的分配将通过定期喷雾休息请求完成。从外部授权此类系统请求请求将使用安全密钥和要添加到列表中的用户 ID 发出 - 有多个节点,每个节点都有喷雾休息入口点 - 只要是一对,速度无关紧要秒 - 顺序无关紧要。

系统只会在负载均衡器上收到一条消息,它必须向用户列表添加一个 ID。由于负载均衡器,它最终会出现在入口点喷雾节点之一上。它必须更新自己的 ID 列表,并广播到应用程序中的所有其他入口点(基本上都来自负载均衡器列表)所需的更新。

希望这能更好地澄清。

0 投票
0 回答
503 浏览

scala - 是否可以从 Spray 中的流构建 Post 请求?

我想知道是否可以使用喷雾基于流而不是字节数组构建响应?

我想从特定的 URL 获取文件——使用Source.fromURL——并将其发布octet-stream到特定的 URL(例如,从 Nexus 获取文件并将其部署到 Tomcat)。

HttpEntity的缓冲方法是Array[Byte],所以我可以将整个文件读入内存并构建POST请求,它应该适用于较小的文件,尽管在大文件的情况下会消耗大量内存。

0 投票
1 回答
712 浏览

scala - 如何使用runRoute在actor的receive中组合路由?

我需要添加一些自定义系统消息处理到spray.routing.HttpService. 我需要receive按如下方式链接方法:

如何组织这个?

0 投票
1 回答
4362 浏览

scala - 如何在喷雾中从响应“set-cookie”标头转换为请求“cookie”标头?

我正在尝试使用spray-clientspray-httpx,但我无法弄清楚如何将“set-cookie”标头转换HttpResponse为我想在HttpRequest

我确实看到spray.http.HttpHeaders.Cookie了,但我看不到从实例转换HttpHeaderHttpCookie...

0 投票
1 回答
5162 浏览

spray - 如何在 SprayTest 中使用 json 主体模拟 POST 请求?

如果我有一个像这样解组 json 的端点:

如何使用喷雾测试规范进行测试:

这显然是行不通的,原因有几个。正确的方法是什么?