为什么 Akka HTTP 在产生多条消息时关闭用户连接?
Why Akka HTTP close user connection, when multiple messages is produced?
我有一个简单的 WebSocket 应用程序,它基于 Akka HTTP
/Reactive streams
,像这样 https://github.com/calvinlfer/akka-http-streaming-response-examples/blob/master/src/main/scala/com/experiments/calvin/ws/WebSocketRoutes.scala#L82.
换句话说,我有Sink
、Source
(由Publisher
产生),以及流程:
Flow.fromSinkAndSource(incomingMessages, outgoingMessages)
当我每秒向客户端生成超过 30 条消息时,Akka
会关闭连接。
我不明白,配置此行为的设置在哪里。我知道 OverflowStrategy,但我没有明确配置它。
看来,我有OverflowStrategy.fail()
,或者我的问题看起来像。
你可以调整Internal buffers。
有两种方法,具体怎么做:
1) application.conf:
akka.stream.materializer.max-input-buffer-size = 1024
2) 您可以为您的 Flow 明确配置它:
Flow.fromSinkAndSource(incomingMessages, outgoingMessages)
.addAttributes(Attributes.inputBuffer(initial = 1, max = 1024))
我有一个简单的 WebSocket 应用程序,它基于 Akka HTTP
/Reactive streams
,像这样 https://github.com/calvinlfer/akka-http-streaming-response-examples/blob/master/src/main/scala/com/experiments/calvin/ws/WebSocketRoutes.scala#L82.
换句话说,我有Sink
、Source
(由Publisher
产生),以及流程:
Flow.fromSinkAndSource(incomingMessages, outgoingMessages)
当我每秒向客户端生成超过 30 条消息时,Akka
会关闭连接。
我不明白,配置此行为的设置在哪里。我知道 OverflowStrategy,但我没有明确配置它。
看来,我有OverflowStrategy.fail()
,或者我的问题看起来像。
你可以调整Internal buffers。
有两种方法,具体怎么做:
1) application.conf:
akka.stream.materializer.max-input-buffer-size = 1024
2) 您可以为您的 Flow 明确配置它:
Flow.fromSinkAndSource(incomingMessages, outgoingMessages)
.addAttributes(Attributes.inputBuffer(initial = 1, max = 1024))