我想根据字段的内容动态地将PCollection的不同元素路由到不同的PubSub主题。主题不是持久的,但是假设它们在运行时执行PubSubIO.Write()时存在。因此,Dataflow应该仅在每个消息的基础上在运行时推断它们的名称。
BigQuery和动态表名称存在该功能:https://beam.apache.org/documentation/sdks/javadoc/2.0.0/org/apache/beam/sdk/io/gcp/bigquery/DynamicDestinations.html
有没有办法与PubSubIO做类似的事情?
也许不是基于消息内容而是基于属性? https://beam.apache.org/documentation/sdks/javadoc/0.6.0/org/apache/beam/sdk/io/PubsubIO.PubsubMessage.html#getAttribute-java.lang.String-
有没有办法与PubSubIO做类似的事情?
Pub / Sub没有相当于DynamicDestinations
的内容。
您需要提前了解所有Pub / Sub主题,并在管道中定义它们。可以基于发布/订阅消息的某个值或属性对管道进行分区,并将其路由到适当的发布/订阅主题。 Partition
变换将检查PubsubMessage
并确定消息所属的分区。
参考:Partition
也许不是基于消息内容而是基于属性?
是的,您可以访问邮件的属性。