Код: Выделить всё
@Async
public void notifyPartner(String partnerId, Session session) {
// This never executes on Lambda
restTemplate.postForEntity(partnerUrl, session, Void.class);
}
Код: Выделить всё
exports.handler = async (event) => {
fetch('https://partner.api/session', { method: 'POST', body: JSON.stringify(event) });
return { statusCode: 200 }; // fire-and-forget, but works
};
1. Почему Lambda блокирует фоновые потоки Java, но не асинхронные вызовы Node.js?
2. Это проблема с загрузкой Java/Spring или проблема с моделью выполнения Lambda?
3. Каков правильный шаблон для создания надежных исходящих HTTP-вызовов из Java Spring Boot Lambda без блокировки ответа обработчика?
Что я пробовал: - Использование CompletableFuture.runAsync() — та же проблема — Использование Spring WebClient (реактивный) — та же проблема, если не вызывается .block() — Тот же код отлично работает в EC2 с долгоработающим контейнером