1

我目前正在实现一个系统,该系统为在 Akka 中收到的消息调用 API 方法。这非常简单,不涉及任何对 Akka 有深入了解的内容。

实际的 API 虽然也允许我们发出批处理请求(类似于此处描述的 JSON-RPC 批处理调用:http: //www.jsonrpc.org/specification)。方法的返回值不会改变,但队列会改变。

我的想法是检查队列中是否有多个消息,并在一个 API 调用中一次处理它们,而不是制作数百个单独的消息(当然是分别回复所有消息的想法)。

Akka有可能吗?

4

1 回答 1

2

没有这样的内置构造。你可以做的是在你的处理actor前面有一个批处理actor。当批处理参与者收到新的回复时,它开始构建批处理。

处理器参与者可以在准备好处理下一批时询问批处理参与者。此时,批处理参与者将其迄今为止收集的所有消息发送到一条消息中。

当然,实际模式会有所不同,具体取决于调用 API 的方式和时间。

但在开始构建这样的模式之前,您应该实际测量性能。我个人更喜欢演员做细粒度的工作,而不是大块的工作。如果您在一个接收操作中做太多工作,您可能会降低公平性。

如果您可以降低公平性以获得潜在(尽管不一定)更高的吞吐量,您应该查看默认调度程序的“吞吐量”设置:

# Throughput defines the maximum number of messages to be
# processed per actor before the thread jumps to the next actor.
# Set to 1 for as fair as possible.
于 2013-02-22T13:56:27.927 回答