Бюджет: 25 USD Термін: 1 день
Добрий день!
Мене звати Ярослав, я співробітник компанії Devoxen. Маємо великий досвід роботи з інтеграційними процесами на базі Oracle SOA / BPEL, асинхронними викликами, чергами та навантаженими системами.
По вашому прикладу:
1. Проблеми в логіці:
— catchAll викликає retryServiceA без перевірки факту успішного виконання ServiceA → ризик дублю
— кореляція тільки по businessId → можливі конфлікти при паралельних інстансах
— відсутній контроль ідемпотентності
— немає timeout / обробки ситуації, коли callback не приходить
2. Де виникають дублі/зависання:
— дубль: ServiceA виконався, але через помилку пішов retry → подвійна обробка
— зависання: receive callback, якщо callback втрачено / не скорельовано / прийшов раніше
— ріст черг через неконтрольовані retry та відсутність обмежень
3. Рішення (коротко):
— додати ідемпотентність (businessId + messageId)
— уточнити correlation set та виключити паралельні інстанси
— розділити технічні та бізнес-помилки (прибрати сліпий catchAll)
— додати timeout, retry policy з лімітами, DLQ
— перевірити налаштування JMS, транзакцій та dehydration store
Працюємо зі стеком: Oracle SOA Suite, BPEL, JMS, REST/SOAP, PostgreSQL/Oracle DB, системи моніторингу та логування.
Пропоную перейти в особисті повідомлення для обговорення деталей аудиту.