2017-11-17 4 views
0

Google 클라우드의 pubsub에서 새로운 주제를 만들 때 새로운 메시지를 만들어야한다는 것을 알 수 있습니다. 키와 값의 쌍으로 메시지의 전체 구조를 작성해야하는 대신 protobuf 파일을 저장할 수 있습니까? 작성해야 할 protobuf 코드는 this입니다. 만약 protobuf isn gcloud pubsub에 넣어 의미, 어떻게 grpc 클라이언트와 함께 사용할 수 있습니까?gcloud pubsub에서 topic 용 protobuf 파일을 추가하는 방법은 무엇입니까?

+0

"새로운 주제를 만들 때 새로운 메시지를 만들어야합니다"라는 의미는 무엇이며 "대신 protobuf 파일을 저장 하시겠습니까?" CreateSubscription은 클라이언트 라이브러리, gRPC 또는 HTTP를 통해 호출해야하는 Pub/Sub API의 일부입니다. 저장할 protobuf 파일은 무엇입니까? Publish API를 통해 주제에 메시지를 보낼 때를 의미합니까? –

+0

네, 그게 무슨 뜻인지. 메시지에 대한 기본 형식을 만들 수 있으므로 데이터를 채우고 구조에 대한 메시지를보다 엄격하게 만들 수 있습니다. – kneelb4darth

답변

1

Publish API를 통해 ProtoBuf 메시지를 보내려면 ByteString으로 일련화한 다음 메시지의 data 필드로 설정해야합니다. 당신이 Java client library를 사용하는 경우 예를 들어, 당신이 Publisher 일부 ProtoBuf 유형의 obj을 가지고, 당신은 다음을 수행 할 수 :

다음 구독 측면에서

PubsubMessage message = PubsubMessage.newBuilder() 
    .setData(obj.toByteString()) 
    .build(); 
ApiFuture<String> response = publisher.publish(message); 
... 

을, 당신은 당신의 MessageReceiver에 메시지를 디코딩 할

public void receiveMessage(PubsubMessage message, AckReplyConsumer consumer) { 
    ProtoBufMessage obj; 
    try { 
    obj = ProtoBufMessage.parseFrom(message.getData()); 
    } catch (Exception e) { 
    // Handle improperly encoded message 
    } 
    ... 
}