Подняли 3 реплики в k8s, и клиенты получили одно и то же письмо три раза 👇
📦 Задание — code review
Ежедневная рассылка счетов через @Scheduled.
@Component
@RequiredArgsConstructor
public class BillingScheduler {
private final InvoiceService invoiceService;
@Scheduled(cron = "0 0 9 * * *")
public void sendDailyInvoices() {
List<Invoice> due = invoiceService.findDueToday();
due.forEach(invoiceService::sendAndMarkSent);
}
}
▪️ Объясни
— Почему @Scheduled выполняется на каждой реплике и приводит к дублирующим отправкам.
— Почему «сначала проверим флаг isSent, потом отправим» не спасает от гонки между подами.
— Какие есть решения и их трейд-оффы.
Ставьте → 🔥, если нравится формат. Если нет → 🌚
💬 Решения под спойлер. Сравним, какое будет лучше.
🐸 Библиотека собеса по Java
#practise