google-cloud-platform - Pubsub 消息缺少时间戳属性
问题描述
我正在尝试从 Apache Beam 读取 Pubsub 消息的时间戳值。
p.apply("Read PubSub messages", PubsubIO.readMessagesWithAttributes()
.withIdAttribute("msg_id")
.withTimestampAttribute("timestamp")
.fromSubscription(options.getPubsubSubscription()))
但不幸的是,我收到了以下错误,这让我很惊讶,因为我认为每条消息都有一个默认时间戳。
An exception occured while executing the Java class.
PubSub message is missing a value for timestamp attribute timestamp
为什么我的消息没有时间戳?是因为我通过 Pubsub UI 发布了它吗?
解决方案
如果您省略 ,则每条 Pub/Sub 消息都将分配默认时间戳.withTimestampAttribute()
。添加.withTimestampAttribute("timestamp")
时意味着您将在timestamp
每条消息的属性中提供时间戳。例如,使用 UI:
然后,窗口化将与这些时间戳相关,如果您需要从管道中访问它,您可以使用ProcessContext.timestamp()
(更多详细信息here)。
推荐阅读
- android - 在 Android 中使用 powerapps 启动特定的外部应用程序
- javascript - 如何从 react-d3-tree 调用节点的 onclick 组件
- javascript - 错误:尝试分配给 const 或只读变量,替换为 let
- css - 我可以在显示后禁用过渡吗?
- vba - 从文件夹打印 PDF 正在打开 Acrobat Reader 但未发送到打印机
- .net - 用户代理的服务器端欺骗
- javascript - TypeError:解析模块说明符时出错
- openstreetmap - 按路线类型提取 Open Street Map 方式 ID 的交叉口计数
- wpf - C#Wpf 中的缩放变换
- rust - 使用 wasm-pack 构建时在 Rust 和 JavaScript 之间传递字符串