Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: resilience, messaging, retry, integration

Как сделать вызов внешнего сервиса (например, отправку алерта) надёжным при высокой нагрузке?

Проверяет умение проектировать отказоустойчивые интеграции.

Короткий ответ

  1. Использовать асинхронные вызовы через очередь (Kafka, RabbitMQ).

  2. Реализовать повторные попытки (retry) с экспоненциальной задержкой.

  3. Добавить dead-letter queue для хранения неудачных запросов.

Длинный ответ

Проблемы синхронного вызова:

  • Таймауты или сбои внешнего сервиса блокируют поток.

  • Риск потери данных при падении приложения.

Решение с очередью:

// Отправка в очередь вместо прямого вызова
kafkaTemplate.send("alerts", alert); 

Consumer с retry:

@Retryable(maxAttempts = 3, backoff = @Backoff(delay = 1000, multiplier = 2))
public void sendAlert(Alert alert) {
    	externalService.send(alert); // Повтор при ошибке 429/500
}

Dead-Letter Queue:

  • Сохраняет алерты, которые не удалось отправить после N попыток.

  • Позволяет вручную обработать сбои.

Вывод: Очереди + retry гарантируют доставку без блокировки основного потока.

  • Аватар

    System Analysis Guru

    Tsarev Andrei

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Java

    Java

  • Kafka

    Kafka

Ключевые слова

#resilience

#messaging

#retry

#integration

Подпишись на Java Developer в телеграм

  • Аватар

    System Analysis Guru

    Tsarev Andrei

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.