我希望在一些初始延迟说10秒之后对在加载请求中发送的字符串进行排队。
如果后续请求是以一些短的间隔延迟(1秒)进行的,那么一切正常,但如果它是从脚本连续创建的那么没有延迟。
以下是示例代码。
def load(randomStr :String) = Action { implicit request =>
Source.single(randomStr)
.delay(10 seconds, DelayOverflowStrategy.backpressure)
.map(x =>{
println(x)
queue.offer(x)
})
.runWith(Sink.ignore)
Ok("")
}
答案 0 :(得分:0)
我不完全确定这是做你想做的事的正确方法。您需要重新考虑一些事项:
延迟源的初始缓冲容量为16个元素。您可以使用addAttributes(initialBuffer)
在您的情况下,缓冲区实际上不会变满,因为每次只提供一个元素。
谁是行动的来电者?您正在定义DelayOverflowStrategy.backpressure
策略,但调用者是否能够处理此问题?
在每次调用动作时,您正在创建一个由一个元素组成的Stream,这里的背压如何帮助?它应用于流处理而不是提供到队列