Jak mozna rozwiazac problem ewentualnej zmiany wymienianego formatu danych pomiedzy dwoma serwisami. Np Mamy mikroserwis A i B, Oba komunikuja sie po SQS jakims jsonem ktory w javie ma pole enum, Teraz idzie nowa wersja apki A a B rzuca error z valueof na tego enuma bo nie ma takiej wartosci. Jak mozna zabezpieczyc sie przed czyms takim, lub tego uniknac ?
wersjonowanie API
Możesz jeszcze poczytać o graphql
SQS i JSON jakoś mało wydajne.
AltCtrlDelete napisał(a):
SQS i JSON jakoś mało wydajne.
co to znaczy mało wydajne ? jakiego latency potrzebujesz ? jaki stack ?
EDIT
filemonczyk napisał(a):
Jak mozna rozwiazac problem ewentualnej zmiany wymienianego formatu danych pomiedzy dwoma serwisami. Np Mamy mikroserwis A i B, Oba komunikuja sie po SQS jakims jsonem ktory w javie ma pole enum, Teraz idzie nowa wersja apki A a B rzuca error z valueof na tego enuma bo nie ma takiej wartosci. Jak mozna zabezpieczyc sie przed czyms takim, lub tego uniknac ?
Wiadomość powinna być wersjonowana.
Ciekawie można to rozwiązać przez format avro, zamiast json. Jeżeli 2 struktury w avro mają ten sam początek (np. pierwsze pole to "wersja"), to zawsze da się odczytać ten początek. Potem w zależności od tego, co wyczytaliśmy w headerze - rzucamy sobie byte[] na odpowiednią klasę (deserializujemy odpowiednim schematem).