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

时间:2018-01-15 20:14:07

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

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

我需要Pub / Sub服务分配的默认ID。我想记录它以进行调试。

我无法使用自定义属性作为唯一ID和withIdAttribute()方法,因为在这种情况下我对发布者没有影响。

我使用2.2.0版本的Dataflow Java SDK。

2 个答案:

答案 0 :(得分:0)

出于调试目的,您可以使用seek option

它创建消息的快照,您可以在需要时重播。

答案 1 :(得分:0)

从Beam v2.16.0开始支持reading the Pubsub message id was added。若要将其打开,请在管道设置中将my_list = [0.0, 0, 0, 0.0, 0, 0, 0] new_list = list(filter(lambda x: isinstance(x, int), my_list)) print(new_list) 替换为[0, 0, 0, 0, 0] ,然后像更改后的.readMessages()一样简单。