【问题标题】:Elixir GenStage Batching EventsElixir GenStage 批处理事件
【发布时间】:2023-03-15 06:14:01
【问题描述】:

给定一个返回的生产者:

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

每个列表项是一个事件,还是列表本身就是一个事件?

如果情况是前者:消费者将自动接收每个消费者请求的事件数量(值已配置,流程由 genserver 内部处理)

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

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

【问题讨论】:

    标签: elixir


    【解决方案1】:
    1. 列表中有一些项目是事件。 GenStage.handle_demand/2 被显式键入以返回一个列表作为第二个参数;如果是事件本身,任何东西都可以作为返回值。

    2. gen_stage/examples 中有四个非常清晰的示例,基本上可以回答所有类似的问题:阅读代码总是能更好地阐明任何质量的文档的意图,即使 Elixir 文档几乎是出色的。

      2.1。最人为的例子就是dispatching events。它使用state 来存储both 未调度的事件队列 请求的事件数。请注意,它可能会阻塞空的queue

      2.2。 rate_limiter example’s code 为您关于谁负责计算事件数量的问题提供了一个简单的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 2021-09-08
      • 2017-10-07
      相关资源
      最近更新 更多