2016-06-14 1 views
0

У меня есть клиент XMPP, и я никогда не получал сообщение CONNECTION_DRAINING, так что у меня есть этот вопрос, , как часто именно CCS необходимо закрыть соединение для выполнения балансировки нагрузки?Как часто 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 them) -CCS обрабатывает инициирование соединения, закрывая его, когда он готов.

CONNECTION_DRAINING сообщение выглядит следующим образом:

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

ответ

0

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

Смежные вопросы