【发布时间】:2023-03-15 06:14:01
【问题描述】:
给定一个返回的生产者:
events = [1,2,3]
{:noreply, events, state}
每个列表项是一个事件,还是列表本身就是一个事件?
如果情况是前者:消费者将自动接收每个消费者请求的事件数量(值已配置,流程由 genserver 内部处理)
或者如果是后者:由生产者发送正确数量的事件。
我相信文档和示例指向第一种情况。
【问题讨论】:
标签: elixir
给定一个返回的生产者:
events = [1,2,3]
{:noreply, events, state}
每个列表项是一个事件,还是列表本身就是一个事件?
如果情况是前者:消费者将自动接收每个消费者请求的事件数量(值已配置,流程由 genserver 内部处理)
或者如果是后者:由生产者发送正确数量的事件。
我相信文档和示例指向第一种情况。
【问题讨论】:
标签: elixir
列表中有一些项目是事件。 GenStage.handle_demand/2 被显式键入以返回一个列表作为第二个参数;如果是事件本身,任何东西都可以作为返回值。
gen_stage/examples 中有四个非常清晰的示例,基本上可以回答所有类似的问题:阅读代码总是能更好地阐明任何质量的文档的意图,即使 Elixir 文档几乎是出色的。
2.1。最人为的例子就是dispatching events。它使用state 来存储both 未调度的事件队列和 请求的事件数。请注意,它可能会阻塞空的queue。
2.2。 rate_limiter example’s code 为您关于谁负责计算事件数量的问题提供了一个简单的答案。
【讨论】: