请考虑以下演员图:
A
\
\
A--B
/
/
A
许多快速行动者A
询问(这很重要,他们不能仅仅告诉他们)不能处理所有消息的缓慢行动者B
。
我当前的实现中放置了一个中间角色,在中间角色之间合并了A和B之间的请求。所以看起来像这样:
A
\
\
A-- Conflator - B
/
/
A
因此Conflator
保留邮件和发件人列表,当B
表示准备处理更多项目时,它会告诉A
相应的响应,并发送所有经过处理的项目至B
为止,并清除其缓冲区。它是自定义类,但扩展性或记录性很差,但效果很好。
现在,我阅读了Akka Streams文档(尤其是this part),该文档与我想要的完全一样。除非我不确定如何在参与者之间注入这种机制以保持性能(在这种情况下是个问题)和可组合性。
执行该操作是否有任何建议/示例/ ...?还是建议这样做,还是我应该坚持天真的实现?我更喜欢C#上的示例,尽管我也知道Scala,所以如果答案是Scala片段(如果答案根本没有任何代码),那也没什么大不了的。