2017-03-09 100 views
1

对于返回制片人:药剂GenStage配料活动

events = [1,2,3] 
{:noreply, events, state} 

是每个列表项的活动,或者是列表本身的事件?

如果情况是前者:消费者会自动接收事件的数量每个消费者询问(值配置和工艺由genserver内部处理)

或者,如果后者:它是由生产者发送正确的事件数量。

我相信文档和示例指向第一种情况。

回答

-1
  1. 列表中有项目是事件。 GenStage.handle_demand/2明确键入返回一个列表作为第二个参数;如果它是事件本身,任何东西都会被支持作为返回值。

  2. gen_stage/examples中有四个非常明显的例子,它们基本上可以回答所有这些问题:阅读代码总是能够更好地阐明任何质量文档的意图,即使Elixir文档几乎很棒。

    2.1。最有人气的例子就是dispatching events。它使用state来存储未分派的事件队列请求的事件数量。请注意,它可能会阻止空queue

    2.2。 rate_limiter example’s code为您的问题提供了一个明确的答案,即谁负责计数多个事件。