2017-12-05 12 views
0

일부 초기 지연 후 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

나는 이것이 당신이 원하는 것을하는 올바른 방법이라고 확신하지 못합니다. 다시 고려해야 할 사항이 있습니다.

  1. 지연 소스의 초기 버퍼 용량은 16 개입니다. 이것을 늘릴 수 있습니다 addAttributes(initialBuffer)

  2. 하나의 요소 만 제공 할 때마다 버퍼가 실제로 가득 찰 수 없습니다.

  3. 행동의 발신자는 누구입니까? DelayOverflowStrategy.backpressure 전략을 정의하지만이를 처리 할 수있는 호출자입니까?

  4. 하나의 요소로 구성된 스트림을 생성 할 때마다 여기에서 배압이 어떻게 도움이됩니까? 스트림 처리시 적용되며 큐에을 제공하지 않습니다.