谷歌云平台发送奇怪的类
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 数据。以上是关于谷歌云平台发送奇怪的类的主要内容,如果未能解决你的问题,请参考以下文章