Elixir GenStage消费者min_demand

时间:2018-09-10 20:43:32

标签: elixir genstage

有一个带有genstage的项目。

生产者A,生产者-消费者B和消费者C。

B请求事件A处发生一个事件(最小需求:0,最大需求:1)。

{:producer_consumer, nil, subscribe_to: [{Grub.Producer, max_demand: 1, min_demand: 0}]}

C向B请求几个事件(最小需求:25,最大需求:50)。

workers = for id <- 1..count do
  {:"Elixir.Grub.Worker#{id}", max_demand: 50, min_demand: 25}
end
{:consumer, {in_process_queue, errors_queue}, subscribe_to: workers}

但是实际上,C一次只能接收和处理一次数据(我从应用程序日志中看到了这一点)。

如何批量制作C过程数据?

1 个答案:

答案 0 :(得分:1)

GenStage不会自己缓存数据。因此,您需要做的是将数据缓存在生产者-消费者like it is documented中。