有没有办法在Java代码中从pubsub接收消息,然后将该代码转换为某种类型的字符串进行解析,然后可以将其用作代码中的输入变量?
我已经使用PubSubIO检索了pubsub消息,但我只知道如何将其作为字符串的PCollection或使用视图作为侧输入,但是无论如何我无法找到从这些数据中获取实际字符串以供使用Java代码。
有人能指出我正确的方向吗?
谢谢!
答案 0 :(得分:2)
如果我正确理解你的问题,这是不可能的。无法使用PCollection
定义之外的Pipeline
元素的值。直观地说,在编写Java代码时可能会出现这种情况(可能没有编译错误),但这并不是Apache Beam实际工作的方式。我想你在执行期间会遇到某种运行时/序列化错误。
据推测,您希望使用元素的某个值来更改Pipeline
。在这种情况下,您需要提前知道所有可能的值,以便分区/构造Pipeline
;价值需要预先确定。
答案 1 :(得分:2)
也许我误解了,但究竟是什么问题?是的,PubsubIO.readStrings()将生成一个字符串的PColleciton,而不是字符串本身,但下一个将链接到这个字符串的转换将接收这些字符串,因此您可以使用ProcessContext轻松地将JAVA代码应用于每个字符串。该变换的@ProcessElement函数中的element()。这就是你所做的所有分裂/等等。这就是你追求的目标吗?