有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有可能在ProjectReactor中有一个对多个订阅者提供独立背压支持的热发布服务器吗?

我的情况如下:

我有一个生成随机数据的生成器。生成的数据应由多个订阅者接收。由于生成的数据是随机的,所以我不能使用cold publisher,因为在cold publisher的情况下,有几个订阅者将接收不同的数据。因此,我需要一个热发布服务器,但我不确定在热发布服务器的情况下如何从订阅者发出有界请求。我的一个订阅服务器任务受CPU限制,而另一个任务受IO限制,因此第二个任务很可能会更慢。在以下情况下,热门出版商的行为有点令人困惑:

  1. CPU绑定订户发出无限请求
  2. IO绑定订户发出绑定请求,例如一次100项

在冷发布的情况下,很明显,每个用户都可以独立于其他用户控制背压,因此,请描述在热发布服务器和多个订阅者的情况下背压是如何工作的,因为在我的情况下,CPU绑定订阅者接收数据的速率将是IO绑定订阅者的速率,这似乎不是最优的,因为一个订阅者依赖于另一个订阅者


共 (1) 个答案

  1. # 1 楼答案

    我会说这取决于热门出版商,但你可能预计它最多只能满足(编辑:最低)需求

    编辑:这完全取决于热门出版商,没有一般规则

    但从概念上讲,它们在不同的订阅者之间“共享”数据,因此为了不压倒其中一个订阅者,它们必须跟踪单个订阅者的请求并相应地将无关数据排队,或者对其源执行一个与订阅者之间的最低请求相匹配的请求Flux#publish()(按范围{}){a1}