2017-02-06 1 views
0

애플리케이션에 Google Cloud Pubsub을 사용하고 있습니다. pubsub 주제 구독자는 Javascript로 작성되어 Nodejs에서 실행됩니다. 나는 google에서 제공하는 공식 pubsub 클라이언트를 사용하고 있습니다.pubsub 구독자 오류 : 최대 메시지 크기가 초과되었습니다.

내 오류 처리기가이 오류 메시지와 함께 트리거지고 계속
var topic = gcloud.pubsub({projectId: 'myProjectId'}).topic('topicName'); 
var pubsub = gcloud.pubsub({projectId: 'myProjectId'}); 
var sub = pubsub.subscription('subName', {topic: topic}); 
sub.on('error', function(err) { console.error(err); }); 
sub.on('message', messageHandler); 

: 모든

Error: Max message size exceeded 

첫째,이에 수신되는 아주 이상한 메시지입니다

코드는 다음과 같습니다 구독자. 메시지가 너무 큰 경우 게시되었을 때 거부되었을 것입니다.

훨씬 더 중요한 것은 내 가입자가 어느 시점에서 죽는 것입니다. 약 80 개의 오류가 발생할 때까지이 메시지를 계속 처리 한 다음 중지합니다. 메시지 핸들러는 절대로 다시 호출되지 않습니다.

어떻게 해결할 수 있습니까?

SDK 버전을 0.46.1로 업데이트했습니다. 새로운 오류 메시지 :

Received message larger than max (10406691 vs. 4194304) 

답변

1

이 가능성이 max_receive_message_length 속성이 gRPC 채널에 설정되어 있지 않은 Node.js를 팝/하위 클라이언트 라이브러리의 버그입니다. 이 경우 "메시지 크기"는 Pub/Sub에 게시 된 메시지의 크기를 나타내지는 않으며 (maximum publish request size을 기준으로 ~ 10MB까지 가능), 보내지는 응답에 허용 된 메시지의 크기 gRPC의 요청. Google Cloud Platform Node.js repository에서 문제를 만드는 것이 좋습니다.

그 사이에 subscription의 maxInProgress 속성을 더 작은 숫자로 설정하면 구독자가 메시지의 작은 배치를 끌어 와야 응답을 더 작게 만들 수 있습니다. 현재 지정되지 않은 경우 단일 응답의 최대 메시지 수는 기본적으로 1000입니다. 그러나 메시지의 크기가 큰 경우이 방법이 도움이되지 않습니다.

관련 문제