java - 使用 Akka 处理文件?

标签 java akka

这实际上是一个设计问题。我不知道如何在 Akka

中实现这一点

用户故事
- 我需要解析大文件(> 1000 万行),看起来像

2013-05-09 11:09:01 Local4.Debug    172.2.10.111    %MMT-7-715036: Group = 199.19.248.164, IP = 199.19.248.164, Sending keep-alive of type DPD R-U-THERE (seq number 0x7db7a2f3)
2013-05-09 11:09:01 Local4.Debug    172.2.10.111    %MMT-7-715046: Group = 199.19.248.164, IP = 199.19.248.164, constructing blank hash payload
2013-05-09 11:09:01 Local4.Debug    172.2.10.111    %MMT-7-715046: Group = 199.19.248.164, IP = 199.19.248.164, constructing qm hash payload
2013-05-09 11:09:01 Local4.Debug    172.2.10.111    %ASA-7-713236: IP = 199.19.248.164, IKE_DECODE SENDING Message (msgid=61216d3e) with payloads : HDR + HASH (8) + NOTIFY (11) + NONE (0) total length : 84
2013-05-09 11:09:01 Local4.Debug    172.22.10.111   %MMT-7-713236: IP = 199.19.248.164, IKE_DECODE RECEIVED Message (msgid=867466fe) with payloads : HDR + HASH (8) + NOTIFY (11) + NONE (0) total length : 84
  • 对于每一行,我需要生成一些将发送到服务器的Event

问题
- 如何在 Akka 模型中有效地读取此日志文件?我读到同步读取文件效果更好,因为磁带移动较少。
- 在这种情况下,每个文件可能有 FileReaderActor,它会读取每一行并将它们发送到处理,例如 EventProcessorRouterRouter 可能有许多参与者在 line 上工作(来自文件)并创建 Event。每将有 1 个事件
- 我还考虑批量发送Event以避免网络中传输过多的数据。在这种情况下,我应该在哪里继续积累这些Events呢?以及我如何知道所有 Events 是否都是从 inputFile 生成的?

谢谢

最佳答案

我想我知道您的要求,您的基本意思是,如果您以您所描述的方式读取和处理文件,如果处理时间比读取时间长得多,您将面临收到大量消息的风险。此外,如果您理想地通过网络发送消息,您会希望最大程度地减少要发送的消息量。如果您的线路不需要很长时间来处理,那么我不会将它们发送到网络上进行处理。 您是否考虑过使用 future 来代替? 不知道你的情况是不是像Parallel File Processing: What are recommended ways?那么简单在这种情况下你应该使用流。但我认为问题在于 Actor ,尽管他们有利于限制他们的主要目的是包装状态,而处理文件则没有那么多。也许你使用 future 会更好,我在这里展示了一个例子Executing Dependent tasks in parallel in Java 。但是您可以使用像您所说的那样的 Actor,让处理 Actor 与读取器 Actor 进行通信,并告诉它一旦等待处理的消息数量超过 1000000 或您决定的数量就停止读取,比如说一秒钟。

关于java - 使用 Akka 处理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30019859/

相关文章:

java - 无法让程序使用用户输入

java - Swing 图片显示优化

java - 迭代 Guava Cache 中的值会丢失数据

scala - Untyped vs TypedActors - 为什么要使用 untyped?

scala - 使用 Akka Streams 读取 CSV 文件

scala - 无法找到参数 FromRequestUnmarshaller Akka 的隐式值

java - JLIST 的 setSelectedValue 方法出错

java - 关于关联的 Hibernate 自定义连接子句

Scala/Akka websocket 服务器库

akka - 在 Akka 中等待多个结果