1
对于返回制片人:药剂GenStage配料活动
events = [1,2,3]
{:noreply, events, state}
是每个列表项的活动,或者是列表本身的事件?
如果情况是前者:消费者会自动接收事件的数量每个消费者询问(值配置和工艺由genserver内部处理)
或者,如果后者:它是由生产者发送正确的事件数量。
我相信文档和示例指向第一种情况。
对于返回制片人:药剂GenStage配料活动
events = [1,2,3]
{:noreply, events, state}
是每个列表项的活动,或者是列表本身的事件?
如果情况是前者:消费者会自动接收事件的数量每个消费者询问(值配置和工艺由genserver内部处理)
或者,如果后者:它是由生产者发送正确的事件数量。
我相信文档和示例指向第一种情况。
列表中有项目是事件。 GenStage.handle_demand/2
明确键入返回一个列表作为第二个参数;如果它是事件本身,任何东西都会被支持作为返回值。
gen_stage/examples
中有四个非常明显的例子,它们基本上可以回答所有这些问题:阅读代码总是能够更好地阐明任何质量文档的意图,即使Elixir文档几乎很棒。
2.1。最有人气的例子就是dispatching events。它使用state
来存储都未分派的事件队列和请求的事件数量。请注意,它可能会阻止空queue
。
2.2。 rate_limiter
example’s code为您的问题提供了一个明确的答案,即谁负责计数多个事件。