问题标签 [akka-http]

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 回答
12684 浏览

scala - 如何测试客户端 Akka HTTP

我刚刚开始测试Akka HTTP Request-Level Client-Side API (Future-Based)。我一直在努力弄清楚的一件事是如何为此编写单元测试。有没有办法模拟响应并完成未来而无需实际执行 HTTP 请求?

我正在查看 API 和 testkit 包,试图了解如何使用它,只是在文档中找到它实际上说的:

akka-http-testkit用于验证服务器端服务实现的测试工具和实用程序集

我在想一些事情TestServer(有点像TestSourceAkka Streams 的),并使用服务器端路由 DSL 来创建预期的响应,并以某种方式将其连接到Http对象。

这是我要测试的功能的简化示例:

0 投票
0 回答
138 浏览

scala - Akka Http websocket连接失败:IllegalStateException:不能多次订阅同一个订阅者

我在使用 akka http websocket 连接时遇到问题。我使用 handleMessagesWithSinkSource(sinkUsesActor , SFPTextMessage ) 处理 websocket 消息。sinkUsesActor 使用一个演员,而 SFPTextMessage 是来自 actorpublisher 的来源。当我刷新浏览器并尝试重新建立连接时,错误提示:

在这种情况下,如何使用来自 actorpublisher (SFPTextMessage) 的相同源?

0 投票
0 回答
58 浏览

websocket - 一些具体的 Akka 问题

我目前正在为我的一个项目寻找akka。我想构建一个主要在 websockets 上通信的网络服务器(它用于收集多个(比如说数千个)大约每小时 1-5gb 的数据流)。

这将是一个需要水平扩展的项目,我想做的基本上是接受一个 http 请求,但启动一个远程参与者(可能在另一台机器上)以将连接升级到 websocket 连接。Akka(-http)可以做到这一点吗?我目前的知识表明这是不可能的,但我不确定。

另外......当我在 scala 中编写我的演员系统时,我可以在 C#.net 中启动用 akka 编写的演员吗?反之亦然?

0 投票
3 回答
3629 浏览

java - 如何使用 Akka HTTP 从多个参与者/Web 处理程序正确调用单个服务器?

我有一个使用 Akka Server HTTP 处理传入请求的服务(我们称之为服务 A)。我也有提供多种网络服务的第 3 方应用程序(服务 B)。服务 A 的目的是转换客户端请求,调用服务 B 的一个或多个 Web 服务,合并/转换结果并将其返回给客户端。

我将 Actors 用于某些部分,而将 Future 用于其他部分。为了调用服务 B,我使用 Akka HTTP 客户端。

问题是,每个 Service A 请求都会创建一个新流,如果有多个并发连接,则会导致akka.stream.OverflowStrategy$Fail$BufferOverflowException: Exceeded configured max-open-requests value of [32] error

我已经问过这个问题并得到了使用单个 Flow如何正确调用 Akka HTTP 客户端来处理多个(10k - 100k)请求的建议?

虽然它适用于来自一个地方的一批请求,但我不知道如何使用来自所有并发请求处理程序的单个 Flow。

正确的“阿卡方式”是什么?

0 投票
0 回答
479 浏览

json - Spray / akka http json 编组案例类作为值

在 spray / akka http 我可以编组/解组这样的案例类:

但是,这会将 a 编组Latitude(42)到 object {value:42}。我宁愿希望它被编组为一个 JsNumber 42。为此,我执行了以下操作:

但是,我不想为每个“简单值案例类”都这样做。我的目标是创建一个函数(或者可能是一个宏),它的工作原理与喷雾的完全一样,jsonFormat1除了它不写入/读取对象而是简单的值,具体取决于我使用它的案例类。

不幸的是,似乎没有任何方法可以扩展或组合从 jsonFormat1 函数返回的 jsonRootFormat 对象。该函数本身似乎使用了已弃用的东西(例如ClassManifest),所以我不确定是否要根据需要复制和调整它。在这种情况下,为 JsValue 函数获取/创建这样一个简单的案例类的最佳选择是什么?

0 投票
1 回答
5905 浏览

scala - 在 Akka 指令中提取路径头

我正在使用akka 指令来匹配特定的路径模式:

例子是

可能的项目(例如“apples”、“bananas”、...)事先不知道,因此使用硬编码项目path不是一种选择。

但是,我找不到提取路径头部的 PathMatcher。我正在寻找某种形式的东西

在哪里

有没有办法提取路径的第一段?

path(segment)如果数量在路径中,则匹配器将不匹配。

我显然可以path(segments)用来获取List[String]路径元素,但是我必须手动提取列表头和列表尾,这看起来很不雅。

预先感谢您的考虑和回复。

0 投票
3 回答
7835 浏览

scala - 正确使用 Akka http 客户端连接池

我需要使用 Akka 的 HTTP 客户端(v2.0.2)来使用 REST 服务。合乎逻辑的方法是通过主机连接池来执行此操作,因为我们预计会有大量的同时连接。Flowfor this 消耗 a(HttpRequest, T)并返回(Try[HttpResponse, T)a 。该文档表明需要一些任意类型T来管理对请求的潜在无序响应,但没有指出调用者应该如何处理返回的T.

我的第一次尝试是下面使用Intas的函数T。从许多地方调用它以确保连接使用单个池。

问题是客户应该如何使用它T?有没有更清洁更有效的解决方案?最后,我对某些事情可能出现故障的妄想症实际上不是妄想症吗?

0 投票
1 回答
256 浏览

akka - 为 Akka HTTP(Spray Routing DSL)路由生成文档

是否有用于喷雾路由 DSL/Akka HTTP 的自定义扩展/指令,允许为给定的 Route 实例生成文档?

0 投票
2 回答
8482 浏览

scala - 如何使用 Akka Streams 和 HTTP 将 HTTP 资源下载到文件中?

在过去的几天里,我一直在尝试找出使用 Akka Streams 和 HTTP 将 HTTP 资源下载到文件的最佳方法。

最初我从Future-Based Variant开始,看起来像这样:

没关系,但是一旦我了解了更多关于纯 Akka 流的知识,我想尝试使用基于流的变体来创建一个从Source[HttpRequest]. 起初,这完全难倒了我,直到我偶然发现了flatMapConcat流量转换。这最终变得更加冗长:

然后我想有点棘手并使用Content-Disposition标题。

回到基于未来的变体:

但是现在我不知道如何使用基于未来的变体来做到这一点。据我所知:

所以现在我有一个Source将为每个元素发出一个或多个(ByteString, File)元素File(我说每个元素,File因为没有理由原件Source必须是一个HttpRequest)。

无论如何要采取这些并将它们路由到动态Sink

我在想类似的东西flatMapConcat,例如:

这样我就可以完成downloadViaFlow2

0 投票
1 回答
3409 浏览

scala - Akka-streams - 如何访问流的物化值

我正在学习使用 Akka 流,并且非常喜欢它,但物化部分对我来说仍然是个谜。

引用自http://doc.akka.io/docs/akka-stream-and-http-experimental/snapshot/scala/http/client-side/host-level.html#host-level-api

...通过在池客户端流具体化到的 HostConnectionPool 实例上调用 shutdown() 来触发特定池的立即关闭

如何获取 HostConnectionPool 实例?

更重要的是,我想大致了解如何访问物化值并执行一些操作或从中检索信息。

提前感谢任何文档指针或解释。