我有一个具有多个管道的数据流设置,可从pub子主题中获取数据。由于这些管道呈扇形散开并与转换器和DoFunctions链合并,因此有必要跟踪通过管道吸收的每个pubsub消息。
什么是正确的方法? 一些想法:
谢谢!
答案 0 :(得分:0)
我相信您的第二种方法最有意义。
在流程元素功能中,您可以捕获任何异常并记录所有失败:
import org.sfl4j.Logger;
import org.slf4j.LoggerFactory;
import ...
public class MyDoFn<ObjectWithPubsubIdA, ObjectWithPubsubIdB> {
private static final Logger LOG = LoggerFactory.getLogger(MyDoFn.class);
@ProcessElement
public void processElement(ProcessContext c) {
ObjectWithPubsubIdA a = c.element();
try {
ObjectWithPubsubIdB b = // transform ObjectWithPubsubIdA ...
c.output(b);
} catch (Exception e) {
LOG.error("MyDoFn failed for message with id {} with exception {}", a.getId(), e);
}
}
}
您可以使用抽象基类或其他特定于语言的构造来重用代码,以便可以在所有转换中共享一个实现。