java - 使用 Apache Beam 从 PubSubIO 获取 Pub/Sub 消息的 messageId 字段

标签 java google-cloud-dataflow apache-beam google-cloud-pubsub

使用 PubSubIO Beam 源读取消息后,是否可以以某种方式获取 DoFn 中 Pub/Sub 消息的 messageId 字段?

我需要由 Pub/Sub 服务分配的默认 ID。我想记录它以用于调试目的。

对我来说,使用唯一 id 的自定义属性和 withIdAttribute() 方法是不可能的,因为在这种情况下我对发布者没有影响力。

我使用 Dataflow Java SDK 2.2.0 版本。

最佳答案

支持reading the Pubsub message id was added从 Beam v2.16.0 开始。要打开它,请在管道设置中将 .readMessages() 替换为 .readMessagesWithMessageId() ,然后就像 message.getMessageId() 一样简单> 更改之后。

关于java - 使用 Apache Beam 从 PubSubIO 获取 Pub/Sub 消息的 messageId 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48270047/

相关文章:

java - Java8中如何进行分组和缩减

java - Play框架中相同实体类的一对多

google-bigquery - BigQueryIO.read().fromQuery 性能缓慢

java - Apache Beam GroupByKey 重复事件

python - 如何使用 Dataflow 在 apache beam 中跳过 io 级别的错误元素?

java - Jboss 在根上下文中部署

尝试从数据库中获取数据时出现 java.lang.NullPointerException

java - 在Dataflow中手动发送PubSub消息

python - Apache Beam Pipeline 与 DirectRunner 一起运行,但在初始读取步骤期间因 DataflowRunner(SDK 线束 sdk-0-0 断开连接)而失败

elasticsearch - 如何为Google数据流实例分配IP范围?