Amazon web services 有没有一种方法可以在消息到达PubSub后使用数据流删除SQS中的消息?

Amazon web services 有没有一种方法可以在消息到达PubSub后使用数据流删除SQS中的消息?,amazon-web-services,google-cloud-platform,google-cloud-dataflow,apache-beam,amazon-sqs,Amazon Web Services,Google Cloud Platform,Google Cloud Dataflow,Apache Beam,Amazon Sqs,我有以下基础设施:数据流用于将消息从AWS SQS发送到谷歌云的Pub/Sub。 使用java和Apache Beam(SqsIO)读取消息 有没有一种数据流方法可以在AWS SQS中的消息到达/在PubSub中读取时删除这些消息?这种方法是什么样的?这可以通过Apache Beam在java中实现吗 谢谢您提前回复 没有内置的消息删除支持,但是您可以添加代码来删除使用Beam从AWS SQS读取的消息。但是您必须小心地执行这样的删除操作 梁流道使用一个或多个辅助对象执行读取。给定的工作项在任何

我有以下基础设施:数据流用于将消息从AWS SQS发送到谷歌云的Pub/Sub。 使用java和Apache Beam(SqsIO)读取消息

有没有一种数据流方法可以在AWS SQS中的消息到达/在PubSub中读取时删除这些消息?这种方法是什么样的?这可以通过Apache Beam在java中实现吗


谢谢您提前回复

没有内置的消息删除支持,但是您可以添加代码来删除使用Beam从AWS SQS读取的消息。但是您必须小心地执行这样的删除操作

梁流道使用一个或多个辅助对象执行读取。给定的工作项在任何时候都可能失败,运行程序通常会重新运行失败的工作项。此外,大多数跑步者融合了多个步骤。例如,如果您有一个
Read
转换,然后是delete
ParDo
,则运行程序可以将这些转换融合在一起执行。现在,如果某个工作项在部分删除数据后失败,则重新运行该工作项可能会失败或产生错误的数据

通常的解决方案是在两个步骤之间添加一个融合中断。您可以通过梁的变换(或仅通过添加使用的任何变换)来实现这一点。例如,程序的流程可以如下所示

pipeline
    .apply(SqsIO.read())
    .apply(Reshuffle.viaRandomKey())
    .apply(ParDo.of(new DeleteSQSDoFn()))
    .apply(BigQuery.Write(...))

你能给我一个“DeleteSQSDoFn”的链接吗?