Как часто именно CCS необходимо закрывать соединение для балансировки нагрузки?

У меня есть клиентский XMPP, и я никогда не получал сообщение CONNECTION_DRAINING, поэтому у меня возникает этот вопрос, как часто именно CCS необходимо закрывать соединение для балансировки нагрузки?

это часть моего кода, где я проверяю, получаю ли я сообщение CONNECTION_DRAINING

............................... more code

def message_callback(session, message):  
    global unacked_messages_quota

    gcmData = message.getTags('data:gcm')
    if gcmData:
        print "alert, the connection is being drained and will be closed soon !!!!!!!!!!!!!"                    
    gcm = message.getTags('gcm')
    if gcm:
        gcm_json = gcm[0].getData()
        msg = json.loads(gcm_json)          
    if not msg.has_key('message_type'):     
      # Acknowledge the incoming message immediately.                   
      send({'to': msg['from'],
            'message_type': 'ack',
            'message_id': msg['message_id']})
.......................................................... more code

я прочитал документы с https://developers.google.com/cloud-messaging/ccs

именно эта часть

Периодически CCS необходимо закрывать соединение для балансировки нагрузки. Перед тем как закрыть соединение, CCS отправляет сообщение CONNECTION_DRAINING, чтобы указать, что соединение очищается и скоро будет закрыто. "Слив" означает отключение потока сообщений, поступающих в соединение, но позволяющее продолжить работу того, что уже находится в конвейере. Когда вы получаете сообщение CONNECTION_DRAINING, вы должны немедленно начать отправку сообщений на другое соединение CCS, открывая новое соединение, если это необходимо. Однако вы должны держать исходное соединение открытым и продолжать получать сообщения, которые могут прийти по соединению (и ACKing их) - CCS обрабатывает инициацию соединения, когда оно готово.

Сообщение CONNECTION_DRAINING выглядит так:

<message>
  <data:gcm xmlns:data="google:mobile:data">
  {
    "message_type":"control"
    "control_type":"CONNECTION_DRAINING"
  }
  </data:gcm>
</message>

1 ответ

Решение

Это обычно по крайней мере один раз в неделю, но может быть гораздо чаще в зависимости от нагрузки.

Другие вопросы по тегам