0

Java で HttpURLConnection を使用して、データ プロバイダーからストリーム (JSON) を取得しています。読み込みには BufferedReader を使用し、処理は multiThread で実装しています。JSON ストリームが 1 秒あたり最大 200 の場合は問題ありませんが、それ以上のストリームがこのエラーでプロバイダーによって切断された場合

Force closing connection to xxx.xxx.xxx.xx because it reached the maximum allowed backup (buffer size is 2343 messages)

データを取得するために使用しているコードは.

pool = new ThreadPoolExecutor(150, 200, 0L, TimeUnit.SECONDS, new LinkedBlockingQueue());
connection = getConnection(dataCollectorURL, username, password);
inputStream = connection.getInputStream();

            if(inputStream!=null)
            {
                int responseCode = connection.getResponseCode();
                if (responseCode >= 200 && responseCode <= 299) {
                    long time = Runtime.getRuntime().freeMemory();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(inputStream, 100*1024),"utf-8"),100*1024);
                    BufferedReader errorReader = null;
                    String line = reader.readLine();
                    while(line != null){

                        jParser = new ObjectMapper().getJsonFactory().createJsonParser(line);
                        try
    {
        pool.execute(new ParseJSONTwitter(jParser.readValueAsTree()));
        if(loopCount==100)
        {
            printThreadStatus();
            loopCount = 0;
        }
        loopCount++;
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
                        if(reader.ready())
                        {
                            line = reader.readLine();

                        }
                        else
                        {
                            line = null;

                        }

                    }


                    if(!(responseCode>=200 && responseCode<=299) || line==null)
                    {
                        if(inputStream!=null)
                        {
                            inputStream.close();//To free n/w resources
                        }
                        reconnect();

                    }
                } else {
                    handleNonSuccessResponse(connection);
                        if(inputStream!=null)
                            {
                                inputStream.close();//To free n/w resources
                            }
                            reconnect();
                }
            }

私は何か間違ったことをしていますか?なぜこのエラーが発生するのですか? この問題を知っている人はいますか?

ありがとう。-ビビン

4

0 に答える 0