как написать этот вопрос в Java или как я мог бы соединить один клиент и 4 сервера друг с другом - PullRequest
0 голосов
/ 24 октября 2019

Вы должны построить систему с одним клиентом и 4 серверами.

Клиент пытается подключиться к серверу 1;происходит сбой

 The failure is due to the fact that the server starts after the client

Затем пытается подключиться к серверу 2;происходит сбой

The failure is due to the fact that server 2 is busy, and responds to the client request late.

Затем пытается подключиться к серверу 3;происходит сбой

The failure is due to incorrect port number used by the client

Затем клиенту удается подключиться к клиенту.

Клиент печатает результаты своих 4 попыток:

Не удается подключиться к серверу 1

Не удается подключиться к серверу 2

Не удается подключиться к серверу 3

Успешно подключиться к серверу 4

1 Ответ

0 голосов
/ 24 октября 2019

Такую логику обычно лучше обрабатывать вне приложения, но если вы хотите реализовать ее в приложении, вам следует рассмотреть возможность использования таких библиотек, как:

  1. Failsafe
  2. Resilience4j

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

    val retry = Retry.of("retrying", RetryConfig.custom<RetryConfig>()
        .maxAttempts(3)
        .intervalFunction { attempt: Int -> (attempt * 2).toLong() }
        .build())

    val responses = ArrayDeque<Response>()
    responses.add(Response(Status.INTERNAL_SERVER_ERROR))
    responses.add(Response(Status.OK))

    val retrying = ResilienceFilters.RetryFailures(retry,
        isError = { r: Response -> !r.status.successful }
    ).then {
        val response = responses.removeFirst()
        println("trying request, will return " + response.status)
        response
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...