谷歌云平台发送奇怪的类

Posted

技术标签:

【中文标题】谷歌云平台发送奇怪的类【英文标题】:Google Cloud Platform send weird classes 【发布时间】:2021-12-31 04:49:00 【问题描述】:

我正在使用CloudPubSubSourceConnector 订阅 GCP,一旦我收到一个事件,我就会在 Kafka 主题中发布

这里是我的 GCPKafkaConnect


    "connector.class": "com.google.pubsub.kafka.source.CloudPubSubSourceConnector",
    "type": "source",
    "kafka.topic": "My-Updates",
    "key.converter": "org.apache.kafka.connect.storage.StringConverter",
    "value.converter": "org.apache.kafka.connect.storage.StringConverter",
    "value.converter.schemas.enable": false,
    "errors.tolerance": "all",
    "errors.deadletterqueue.topic.name":"Updates-Failed",
    "errors.deadletterqueue.context.headers.enable": true,
    "errors.log.enable": true,
    "errors.log.include.messages": true,
    "errors.retry.delay.max.ms": 60000,
    "errors.retry.timeout": 300000,
    "cps.subscription":"hk_subscription",
    "cps.project":"hub-dev",
    "gcp.credentials.file.path":"/tmp/gcp/gcp.json",
    "gcp.credentials.json":"gcp.json",
    "kafka.partition.count": 3
  

我使用gcloud 命令发送的所有信息都是编码

 gcloud pubsub topics publish hk_subscription_pubsub_topic --message="aGVsbG8gd29ybGQ="

那我订阅Topic的时候,不知道为什么有时候会收到编码的文字

Json encoded string aGVsbG8gd29ybGQ=

还有一半的时间,就像一个无法解码的类

Json encoded string [B@66976faa

对这个问题有任何想法吗?

问候。

【问题讨论】:

第一个看起来像base64数据。另一个只是一个字节数组......你试过用ByteArrayConverter代替StringConverter吗? JSONConverter 怎么样,因为它是您添加的唯一具有模式启用属性的转换器? (字符串没有模式) 我尝试使用所有转换器(字节,字符串,Json),并且在所有这些转换器中,我仍然有一半时间接收到正确编码的字节数组,另一时间接收到我无法反序列化的类名.不明白为什么,因为我一直在发送相同的消息 json 转换器至少应该返回遵循docs.confluent.io/kafka-connect-gcp-pubsub/current/… 此处提到的架构的数据 还有,你到底是用什么来消费的? JSONConverter 不能在消费者中使用。 ByteArrayDeserializer 肯定会始终显示类似[B@66976faa 的内容。如果您在 Connect 中使用 StringConverter 或 JSONConverter,至少应该使用 StringDeserializer 【参考方案1】:

正如 OneCricketeer 所说:

JSONConverter 不能在消费者中使用。 ByteArrayDeserializer 肯定会一直显示类似 [B@66976faa。你应该使用 StringDeserializer,至少,如果你是 在 Connect 中使用 StringConverter 或 JSONConverter。

关于StringDeserializer的更多细节,可以参考这个documentation。

【讨论】:

不过,这并不能回答所提出的问题,这似乎是在解码 base64 数据。

以上是关于谷歌云平台发送奇怪的类的主要内容,如果未能解决你的问题,请参考以下文章

授权谷歌云平台服务账号只访问一个谷歌云存储桶

如何连接谷歌云平台的Mlab?

谷歌云平台***创建

在谷歌云平台部署python脚本

通过谷歌云平台的 Tensorboard

在 ubuntu 谷歌云平台上安装 RethinkDb