Budżet: 25 USD Termin: 1 dzień
Dzień dobry!
Nazywam się Jarosław, jestem pracownikiem firmy Devoxen. Mamy duże doświadczenie w zakresie procesów integracyjnych opartych na Oracle SOA / BPEL, asynchronicznych wywołaniach, kolejkach i obciążonych systemach.
Na podstawie twojego przykładu:
1. Problemy w logice:
— catchAll wywołuje retryServiceA bez sprawdzenia faktu pomyślnego wykonania ServiceA → ryzyko duplikatów
— korelacja tylko po businessId → możliwe konflikty przy równoległych instancjach
— brak kontroli idempotencji
— brak timeout / obsługi sytuacji, gdy callback nie przychodzi
2. Gdzie występują duplikaty/zawieszenia:
— duplikat: ServiceA wykonał się, ale z powodu błędu nastąpił retry → podwójne przetwarzanie
— zawieszenie: odbierz callback, jeśli callback został utracony / nie skorelowany / przyszedł wcześniej
— wzrost kolejek z powodu niekontrolowanych retry i braku ograniczeń
3. Rozwiązania (krótko):
— dodać idempotencję (businessId + messageId)
— doprecyzować zestaw korelacji i wykluczyć równoległe instancje
— rozdzielić błędy techniczne i biznesowe (usunąć ślepy catchAll)
— dodać timeout, politykę retry z limitami, DLQ
— sprawdzić ustawienia JMS, transakcji i dehydracji store
Pracujemy z technologiami: Oracle SOA Suite, BPEL, JMS, REST/SOAP, PostgreSQL/Oracle DB, systemy monitorowania i logowania.
Proponuję przejść do wiadomości prywatnych w celu omówienia szczegółów audytu.