我需要在gcm服务中每秒发送500次推送通知。不幸的是,与chrome49不同,我必须为每个chrome50客户加密消息,加密密钥在请求头中指出。上述后5000级的邮件发送我收到超时&连接从https://android.googleapis.com/gcm/send拒绝和它停止工作一段时间,然后正常工作定期发送5000次推送通知后拒绝GCM超时和连接
POST请求的线程乳宁
try {
String path = "https://android.googleapis.com/gcm/send";
URI uri = new URIBuilder()
.setPath(path)
.build();
HttpPost httpPost = new HttpPost(uri);
httpPost.addHeader("Accept", "application/json");
httpPost.addHeader("Content-Encoding", "aesgcm");
httpPost.addHeader("Cache-Control", "no-cache");
httpPost.addHeader("Connection", "Keep-Alive");
httpPost.addHeader("Content-Type", "application/json");
httpPost.addHeader("Authorization", "key=" + appKey);
httpPost.addHeader("Encryption", encryptionHeader);
httpPost.addHeader("Crypto-Key", cryptoKeyHeader);
httpPost.setEntity(new StringEntity(jsonFromData));
HttpResponse response = client.execute(httpPost);
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity).replace("%", "@");
LOGGER.info(responseString);
} catch (Exception e) {
e.printStackTrace();
}
例外:连接被拒绝
org.apache.http.conn.HttpHostConnectException:连接到 https://android.googleapis.com拒绝在 org.apache.http.impl.conn.DefaultClientConnection Operator.openConnection(DefaultClientConnectionOperator.java:190) 在 org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294) 在 org.apache.http.impl.client.DefaultRequestDirector.tryConnect( DefaultRequestDirector.java:643) 在 org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479) 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java: (AbstractHttpClient.exe)。的java:784) 在 com.mpsdevelopment.push.threads.SenderThread.sent(SenderThread.java:100) 在 com.mpsdevelopment.push.threads.SenderThread.run(SenderThread.java:76) 在 的java .util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java :1142) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745)
连接超时
所致:java.net.ConnectException:连接超时:在java.net.DualStackPlainSocketImpl.connect0(本机方法)在 java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl连接 。的java:79) 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl .java:188) at ja va.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at java.net.Socket.connect(Socket.java:589)at sun。 security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:414) at org.apache.http.impl.conn.DefaultClientConnectionOperator .openConnection(DefaultClientConnectionOperator。Java的:180) ...... 13多个