问题标签 [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.
scala - 如何测试客户端 Akka HTTP
我刚刚开始测试Akka HTTP Request-Level Client-Side API (Future-Based)。我一直在努力弄清楚的一件事是如何为此编写单元测试。有没有办法模拟响应并完成未来而无需实际执行 HTTP 请求?
我正在查看 API 和 testkit 包,试图了解如何使用它,只是在文档中找到它实际上说的:
akka-http-testkit用于验证服务器端服务实现的测试工具和实用程序集
我在想一些事情TestServer
(有点像TestSource
Akka Streams 的),并使用服务器端路由 DSL 来创建预期的响应,并以某种方式将其连接到Http
对象。
这是我要测试的功能的简化示例:
scala - Akka Http websocket连接失败:IllegalStateException:不能多次订阅同一个订阅者
我在使用 akka http websocket 连接时遇到问题。我使用 handleMessagesWithSinkSource(sinkUsesActor , SFPTextMessage ) 处理 websocket 消息。sinkUsesActor 使用一个演员,而 SFPTextMessage 是来自 actorpublisher 的来源。当我刷新浏览器并尝试重新建立连接时,错误提示:
在这种情况下,如何使用来自 actorpublisher (SFPTextMessage) 的相同源?
websocket - 一些具体的 Akka 问题
我目前正在为我的一个项目寻找akka。我想构建一个主要在 websockets 上通信的网络服务器(它用于收集多个(比如说数千个)大约每小时 1-5gb 的数据流)。
这将是一个需要水平扩展的项目,我想做的基本上是接受一个 http 请求,但启动一个远程参与者(可能在另一台机器上)以将连接升级到 websocket 连接。Akka(-http)可以做到这一点吗?我目前的知识表明这是不可能的,但我不确定。
另外......当我在 scala 中编写我的演员系统时,我可以在 C#.net 中启动用 akka 编写的演员吗?反之亦然?
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。
正确的“阿卡方式”是什么?
json - Spray / akka http json 编组案例类作为值
在 spray / akka http 我可以编组/解组这样的案例类:
但是,这会将 a 编组Latitude(42)
到 object {value:42}
。我宁愿希望它被编组为一个 JsNumber 42
。为此,我执行了以下操作:
但是,我不想为每个“简单值案例类”都这样做。我的目标是创建一个函数(或者可能是一个宏),它的工作原理与喷雾的完全一样,jsonFormat1
除了它不写入/读取对象而是简单的值,具体取决于我使用它的案例类。
不幸的是,似乎没有任何方法可以扩展或组合从 jsonFormat1 函数返回的 jsonRootFormat 对象。该函数本身似乎使用了已弃用的东西(例如ClassManifest
),所以我不确定是否要根据需要复制和调整它。在这种情况下,为 JsValue 函数获取/创建这样一个简单的案例类的最佳选择是什么?
scala - 在 Akka 指令中提取路径头
我正在使用akka 指令来匹配特定的路径模式:
例子是
可能的项目(例如“apples”、“bananas”、...)事先不知道,因此使用硬编码项目path
不是一种选择。
但是,我找不到提取路径头部的 PathMatcher。我正在寻找某种形式的东西
在哪里
有没有办法提取路径的第一段?
path(segment)
如果数量在路径中,则匹配器将不匹配。
我显然可以path(segments)
用来获取List[String]
路径元素,但是我必须手动提取列表头和列表尾,这看起来很不雅。
预先感谢您的考虑和回复。
scala - 正确使用 Akka http 客户端连接池
我需要使用 Akka 的 HTTP 客户端(v2.0.2)来使用 REST 服务。合乎逻辑的方法是通过主机连接池来执行此操作,因为我们预计会有大量的同时连接。Flow
for this 消耗 a(HttpRequest, T)
并返回(Try[HttpResponse, T)
a 。该文档表明需要一些任意类型T
来管理对请求的潜在无序响应,但没有指出调用者应该如何处理返回的T
.
我的第一次尝试是下面使用Int
as的函数T
。从许多地方调用它以确保连接使用单个池。
问题是客户应该如何使用它T
?有没有更清洁更有效的解决方案?最后,我对某些事情可能出现故障的妄想症实际上不是妄想症吗?
akka - 为 Akka HTTP(Spray Routing DSL)路由生成文档
是否有用于喷雾路由 DSL/Akka HTTP 的自定义扩展/指令,允许为给定的 Route 实例生成文档?
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
:
scala - Akka-streams - 如何访问流的物化值
我正在学习使用 Akka 流,并且非常喜欢它,但物化部分对我来说仍然是个谜。
...通过在池客户端流具体化到的 HostConnectionPool 实例上调用 shutdown() 来触发特定池的立即关闭
如何获取 HostConnectionPool 实例?
更重要的是,我想大致了解如何访问物化值并执行一些操作或从中检索信息。
提前感谢任何文档指针或解释。