apache beam PubSub 的替代方法在普通 pubsub 客户端库中读取 withIdAttribute
Alternative for apache beam PubSub read withIdAttribute in normal pubsub client library
在 beam sdk 中,pubusbIO read 提供了一个通过使用消息 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 客户端库中没有相同的功能。 Cloud Dataflow,即 运行 Beam 管道,保留最新 messageId 的缓存(我不知道有多少次,但只有几分钟)。这是 Beam 功能。
当您使用 PubSub 时,由于 PubSub 仅保证 at-least-one-delivery,建议您的进程具有幂等性
In general, accommodating more-than-once delivery requires your subscriber to be idempotent when processing messages.
在 beam sdk 中,pubusbIO read 提供了一个通过使用消息 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 客户端库中没有相同的功能。 Cloud Dataflow,即 运行 Beam 管道,保留最新 messageId 的缓存(我不知道有多少次,但只有几分钟)。这是 Beam 功能。
当您使用 PubSub 时,由于 PubSub 仅保证 at-least-one-delivery,建议您的进程具有幂等性
In general, accommodating more-than-once delivery requires your subscriber to be idempotent when processing messages.