如果流中元素的映射/处理失败,我该如何重试?
我已尝试在材质器中设置决策程序,但它不提供重试。它只是将异常映射到监督阶段。
由于
答案 0 :(得分:0)
将其视为提示而非完整答案。我最近使用future和mapAsync
实现了类似的功能。有一个名为retry的库,可以使用不同的策略重试期货,例如暂停或退出。但是这个方法有一个问题,因为akka流使用有界缓冲区,如果mapAsync缓冲的所有期货都失败了,你的管道就会停止处理。
解决此问题的另一种方法是使用反馈循环构建一个流程,将失败的消息重新启动。这是更好的解决方案,因为失败的人不会阻止您的管道,但是,我发现以这种方式实施退避策略更难。
答案 1 :(得分:0)
从akka-stream 2.4.4 ,您可以使用Source
(文档here)。
这基本上允许你提供
它适用于Flow
和SELECT
*
FROM
table_a AS a
WHERE
a.ID not in(
SELECT
b.ID
FROM
table_b AS b
)
。