0

私はクライアント 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 接続へのメッセージの送信を開始し、必要に応じて新しい接続を開始する必要があります。ただし、元の接続を開いたままにして、接続を介して来る可能性のあるメッセージを受信し続ける (およびそれらに ACK を送信する) 必要があります。

CONNECTION_DRAINING メッセージは次のようになります。

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

1 に答える 1

0

通常は少なくとも週に 1 回ですが、負荷によってはもっと頻繁になることもあります。

于 2016-07-02T00:13:37.207 に答える