Java 确认Apache Beam上的Google发布/订阅消息

Java 确认Apache Beam上的Google发布/订阅消息,java,google-cloud-pubsub,apache-beam,apache-beam-io,Java,Google Cloud Pubsub,Apache Beam,Apache Beam Io,我正在尝试使用以下代码阅读pub/sub Read<String> pubsub = PubsubIO.<String>read().topic("projects/<projectId>/topics/<topic>").subscription("projects/<projectId>/subscriptions/<subscription>").withCoder(StringUtf8Coder.of()).with

我正在尝试使用以下代码阅读pub/sub

Read<String> pubsub = PubsubIO.<String>read().topic("projects/<projectId>/topics/<topic>").subscription("projects/<projectId>/subscriptions/<subscription>").withCoder(StringUtf8Coder.of()).withAttributes(new SimpleFunction<PubsubMessage,String>() {
    @Override
    public String apply(PubsubMessage input) {
        LOG.info("hola " + input.getAttributeMap());
        return new String(input.getMessage());
    }
});
PCollection<String> pps = p.apply(pubsub)
        .apply(
                Window.<String>into(
                    FixedWindows.of(Duration.standardSeconds(15))));
pps.apply("printdata",ParDo.of(new DoFn<String, String>() {
    @ProcessElement
    public void processElement(ProcessContext c) {
        LOG.info("hola amigo "+c.element());
        c.output(c.element());
    }
  }));
Read pubsub=PubsubIO.Read().topic(“projects//topics/”).subscription(“projects//subscriptions/”).withCoder(StringUtf8Coder.of()).withAttributes(new SimpleFunction()){
@凌驾
公共字符串应用(PubsubMessage输入){
LOG.info(“hola”+input.getAttributeMap());
返回新字符串(input.getMessage());
}
});
PCollection pps=p.apply(pubsub)
.申请(
开窗(
固定窗口(持续时间标准秒(15));
pps.apply(“打印数据”,第页,共页(新DoFn)(){
@过程元素
公共void processElement(ProcessContext c){
LOG.info(“hola amigo”+c.element());
c、 输出(c.element());
}
}));
与我在NodeJS上收到的信息相比,我得到的信息将包含在
data
字段中。如何获取
ackId
字段(我可以稍后使用该字段确认消息)?我正在打印的属性映射为
null

是否有其他方法来确认所有消息而不必计算确认ID?

阅读器负责确认消息。它与跑步者的检查点行为有关。具体地说,源仅在检查结果元素时确认消息


在本例中,您应该查看Flink runner何时检查该源的状态信息。我相信这与检查点频率的Flink配置有关。

我使用的是v0.6.0,您使用的是哪种运行程序?我相信
PubsubIO.read()
应该在消息成功处理后为您确认消息-您确定您自己确认消息是必要的吗?我使用的是flink runner。邮件似乎没有得到确认,但我会再次检查。我再次检查,邮件肯定没有得到确认。但是我错误地认为ackId将在属性中-属性映射值是正确的。因此,我只需要知道如何确认我的消息。
PubsubIO
阅读器负责确认消息。我相信这与跑步者的检查点行为有关。具体地说,只有当读取的元素被检查时,源才会确认。您是如何配置flink runner的检查点行为的?