作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个披萨 toastr 和一系列我需要烘烤的披萨。我的 toastr 一次只能烤 4 个比萨饼,可以合理地预计一天中至少有 4 个比萨饼在排队,因此 toastr 需要尽可能地满负荷运转。
每次我将披萨放入 toastr 时,我都会在手机上设置一个计时器。一旦发生这种情况,我将披萨从 toastr 中取出,交给任何想要它的人,然后容量就可用了。
我在这里有 2 个来源,一个是要煮熟的比萨饼队列,另一个是在比萨饼煮熟后响起的鸡蛋计时器。系统中还有 2 个接收器,一个是煮熟的比萨的目的地,另一个是发送比萨已放入 toastr 的确认的地方。
我目前非常天真地代表这些,如下:
Source.fromIterator(() => pizzas)
.map(putInOven) // puts in oven and sets a timer
.runWith(Sink.actorRef(confirmationDest, EndSignal))
Source.fromIterator(() => timerAlerts)
.map(removePizza)
.runWith(Sink.actorRef(pizzaDest, EndSignal))
┌─────────────┐
┌─>│CapacityAvail│>──┐
│ └─────────────┘ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ ┌─────────────┐ ├──>│ Zip │>─>│ PutInOven │>─>│ Confirm │
│ │ Queue │>──┘ └─────────────┘ └─────────────┘ └─────────────┘
│ └─────────────┘
│ ┌─────────────┐ ┌─────────────┐
│ │ Done │>─────>│ SendPizza │
│ └─────────────┘ └─────────────┘
│ v
│ │
└─────────┘
CapacityAvail
来源。它们用进入 Pizza 队列的事件进行压缩,这意味着如果没有可用的事件,则没有比萨处理开始,因为 zip 操作将等待它们。
最佳答案
这个用例通常不能很好地映射到 Akka Streams。在引擎盖下,Akka Stream 是 reactive stream ;来自 documentation :
Akka Streams implementation uses the Reactive Streams interfaces internally to pass data between the different processing stages.
关于scala - Akka 流 : How do I model capacity/rate limiting within a system of 2 related streams?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40335040/
我是一名优秀的程序员,十分优秀!