10

Khi sử dụng API Google Cloud Messaging để gửi tin nhắn giữa máy chủ phụ và máy khách Android/Chrome, máy chủ phụ có thể nhận được giới hạn tốc độ vượt quá mã phản hồi. Mã này là “DeviceMessageRateExceeded” cho số HTTP Connection Server và “DEVICE_MESSAGE_RATE_EXCEEDED” cho số Cloud Connection Server.Giới hạn tốc độ Đã vượt quá lỗi khi sử dụng API Google Cloud Messaging

Mã lỗi này là gì và cách mã này được quản lý như thế nào?

Trả lời

12

Mã ngoại lệ giới hạn tốc độ cho biết rằng bạn đang gửi thư từ máy chủ phụ trợ quá thường xuyên. Để đảm bảo một dịch vụ ổn định, có giới hạn trên mỗi phút cho mỗi thiết bị ứng dụng trên số lượng tin nhắn có thể được gửi từ một máy chủ phụ trợ. Giới hạn này được đặt ở mức cao nên hầu hết các ứng dụng hoạt động tốt sẽ không bị ảnh hưởng, tất cả các ứng dụng nên được chuẩn bị để nhận mã lỗi này.

Như được chỉ định trong câu hỏi, trong trường hợp là HTTP Connection Server, mã lỗi sẽ là “DeviceMessageRateExceeded”. Và đối với số Cloud Connection Server, số này sẽ là “DEVICE_MESSAGE_RATE_EXCEEDED”, thay thế mã lỗi trước “QUOTA_EXCEEDED”.

Nếu máy chủ phụ trợ của bạn nhận được mã lỗi này, nó phải làm chậm tốc độ gửi thư đến máy khách, lý tưởng nhất là bằng cách triển khai exponential backoff.

+0

Ack hạ lưu có nằm trong hạn ngạch không? Làm cách nào để biết thời gian mà tôi có thể gửi lại các thông điệp hạ lưu? – doplumi

+0

Bạn sẽ không biết chính xác thời điểm bạn có thể gửi lại tin nhắn, nhưng bạn nên sử dụng backoff theo cấp số nhân ở cấp hệ thống khi bạn cố gắng gửi lại. – PaulR

+0

Nếu chúng tôi đã thực hiện backoff theo cấp số nhân và tôn trọng Retry-After cho mã lỗi 5xx thì điều đó có đủ không? –

6

CCS hạ lưu ACK không được tính vào hạn ngạch.

Hạn ngạch DeviceMessageRateVượt quá hạn ngạch được nhấn khi bạn gửi quá nhiều thư tới một thiết bị - bạn không cần phải hoàn trả tất cả việc gửi, chỉ với ID đăng ký đó. Vui lòng đảm bảo bạn xử lý phản hồi ID đăng ký "Canonical" - có thể có nhiều danh sách chỉ đến cùng một thiết bị.

'quota_exceeded' đã được sử dụng trong C2DM - GCM hiện không trả lại. Nếu bất cứ ai vẫn đang sử dụng C2DM - việc xử lý là để throttle/backoff gửi cho tất cả các tin nhắn. Hoặc thậm chí tốt hơn - để chuyển sang GCM không có hạn ngạch toàn cầu này.

Các vấn đề liên quan