首页 > 解决方案 > 在使用 Go 的 Apache Beam 中的 Pcollection 中使用 Protobuf 消息导致错误

问题描述

func processPubSubMsgFn(ctx context.Context, in *pubsub.PubsubMessage) v1.someProto {
    someProto := &v1.someProto{}
    if err := proto.Unmarshal((in.Data), someProto); err != nil {
        log.Fatalln("Failed to parse address book:", err)
    }
    return *someProto
}

原因:错误的返回类型导致:编码 struct v1.someProto 类型有未导出的字段:状态

尝试运行管道时,在 java 中我会为消息类型设置编码器,不知道如何在 Apache Beam 的 Go 版本中执行此操作

标签: goprotocol-buffersapache-beam

解决方案


从我在apache beam sdk中看到的,你应该返回*v1.someProto而不是v1.someProto.


推荐阅读