如何解决在普通pubsub客户端库中用idAttribute读取的Apache Beam PubSub的替代方法
在Beam sdk中,pubusbIO读取提供了一个使用消息ID:https://beam.apache.org/releases/javadoc/2.23.0/org/apache/beam/sdk/io/gcp/pubsub/PubsubIO.Read.html#withIdAttribute-java.lang.String-
对消息进行重复数据删除的选项当我检出Pubsub客户端库(用于Java和python)时,我看不到使用消息ID对消息进行重复数据删除的类似选项。
所以我的问题是:
- pubsub客户端库(python和java)是否具有类似的功能?也许是因为命名不同而错过了。
- 如果没有,您如何处理这种情况?我很好奇它是如何作为灵感解决的。原因我正在考虑使用缓存在客户端应用程序中存储用于重复数据删除的最新消息ID。
谢谢。
解决方法
PubSub客户端库中没有相同的功能。运行Beam管道的Cloud Dataflow保留了最新messageIds的缓存(我不知道有多少时间,但是只有几分钟)。这是Beam的功能。
使用PubSub时,并且由于PubSub仅保证at-least-one-delivery,因此建议您的过程是幂等的
通常,要容纳多于一次的传递,则要求您的订户在处理消息时必须是幂等的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。