【发布时间】:2023-03-30 16:38:01
【问题描述】:
可以序列化 Reactor Flux。例如,我的 Flux 处于某种状态,当前正在处理某个事件。突然服务终止。 Flux 的当前状态保存到数据库或文件中。然后在重新启动应用程序时,我只需从该文件/表中获取所有 Flux 并订阅它们以从上一个状态重新开始处理。这在反应堆中是可能的吗?
【问题讨论】:
标签: project-reactor
可以序列化 Reactor Flux。例如,我的 Flux 处于某种状态,当前正在处理某个事件。突然服务终止。 Flux 的当前状态保存到数据库或文件中。然后在重新启动应用程序时,我只需从该文件/表中获取所有 Flux 并订阅它们以从上一个状态重新开始处理。这在反应堆中是可能的吗?
【问题讨论】:
标签: project-reactor
不,这是不可能的。 Flux 不可序列化并且更接近于函数链,它们不一定具有状态[1],但描述了在给定输入的情况下要做什么(由初始生成 Flux 提供)...
因此,为了“重新启动”Flux,您实际上必须创建一个新的,以获取原始输入在服务终止时收到的剩余输入。
因此,保存最后发出的状态并允许从那里重新启动 new Flux 序列将更多取决于数据源。
[1] 虽然,根据您链接的运算符,您可能会影响某些外部状态。在这种情况下,事情会变得更加复杂,因为您还必须保持该状态。
【讨论】: