게시 하위 주제에 로그 내보내기를 사용하도록 설정했습니다. 데이터 흐름을 사용하여 이러한 로그를 처리하고 관련 열을 BigQuery에 저장합니다. 누군가가 pubsub 메시지 페이로드를 LogEntry
개체로 변환하는 것을 도울 수 있습니까? 다음 코드 시도 :로그 내보내기에서 pubsub 페이로드를 LogEntry 개체로 변환하는 방법
@ProcessElement
public void processElement(ProcessContext c) throws Exception {
PubsubMessage pubsubMessage = c.element();
ObjectMapper mapper = new ObjectMapper();
byte[] payload = pubsubMessage.getPayload();
String s = new String(payload, "UTF8");
LogEntry logEntry = mapper.readValue(s, LogEntry.class);
}
을하지만, 나는 다음과 같은 오류가 발생했습니다 :
com.fasterxml.jackson.databind.JsonMappingException: Can not find a (Map) Key deserializer for type [simple type, class com.google.protobuf.Descriptors$FieldDescriptor]
편집 : 나는 다음과 같은 코드를 시도 :
try {
ByteArrayInputStream stream = new ByteArrayInputStream(Base64.decodeBase64(pubsubMessage.getPayload()));
LogEntry logEntry = LogEntry.parseDelimitedFrom(stream);
System.out.println("Log Entry = " + logEntry);
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
을하지만 난 다음 얻을 오류 :
com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag