Поток HTTP отключен анонимно с помощью java jersey client

Для одного из наших проектов мы потребляем поток HTTP-потоков с помощью java-джерси-клиента

С клиентом Потребление корма прекрасное, но после 10 минут времени поток падает ненормально; даже несмотря на то, что производитель потоков работает и создает поток

Это то, что я пробовал;

import java.util.Date;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.client.Invocation.Builder;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.glassfish.jersey.client.ChunkedInput;

public class StreamClient {

    private static final String BOUNDARY = "\n";

    public void makeCall() {
        System.out.println("Start Time"+ new Date()) ;
        Client client = ClientBuilder.newClient();
        BasicAuth auth = new BasicAuth();
        auth.setPassword("username");
        auth.setUserName("password");
        BasicAuthentication basicAuthentication = new BasicAuthentication(auth);
        client.register(basicAuthentication);
        WebTarget target = client.target("https://localhost:7211/stream/v1/");
        Builder request = target.request(MediaType.APPLICATION_JSON);
        Response response = request.get();

        final ChunkedInput<String> chunkedInput = response.readEntity(new GenericType<ChunkedInput<String>>() {
        });

        chunkedInput.setParser(ChunkedInput.createParser(BOUNDARY));
        String chunk;
        do {
            if((chunk = chunkedInput.read()) != null) 
                System.out.println(chunk);  
        }while (!chunkedInput.isClosed());
        System.out.println("End Time " + new Date());
    }

    public static void main(String[] args) {
        StreamClient client = new StreamClient();
        client.makeCall();
    }


}

Если поток не падает; поток должен находиться внутри цикла while; как только поток закрывается, поток выйдет и распечатает инструкцию sysout

Здесь возникает вопрос: почему chunkedinput закрыт.

Пожалуйста, помогите мне с разрешением;

Здесь для каждого разделения полезной нагрузки/фрагмента на сервере это \r\n и сделать это соединение активным с сервера, отправив \n (на стороне клиента я должен игнорировать это.)

Ответы

Ответ 1

Я бы рекомендовал использовать wirehark для анализа трафика точно в момент потери соединения, скорее всего, брандмауэр разрезает конвекцию.

В любом случае попытка отладки этих сценариев без двусторонней регистрации - это 50% -ная ситуация с русским языком.

Если вы хотите отменить сценарии, попробуйте изменить объем передаваемых данных, параметры соединения (используя другие методы конструктора) и проверьте, соответствует ли время ожидания во времени, если таймаут зависит от количества трафика, который обычно подсказка, что вы запускаете некоторый порог в промежуточном устройстве, таком как брандмауэр.