[RASSUS] 3. laboratorijska vježba - 2021/2022
tata
kad pokusavam procitat s config servera property u application.yml mi javlja
Error creating bean with name ‘aggregatorController’: Injection of autowired dependencies failed;
(mogao sam injectati bean kad se direktno citalo iz application.properties bez tog config servera)
PiqueBlinders
eureku i config server nema potrebe spajati u okviru ovog labosa? samo config<->aggregator, i eureka <-> 3 mikroservisa
RogerRoger
Ako netko ne zna gdje bi krenuo (po mom mišljenju ovo je dosta loše obrađeno na predavanjima (kao i puno drugih stvari)) yt kanal javabrains ima odlične tutoriale:
[
Pogledajte po kanalu, objašnjeno je apsolutno sve što je potrebno za ovaj labos kroz nekih desetak videa po 10min, a tip je stvarno fenomenalan predavač.
laranotreallycroft
Kako se readings.csv čita iz dockera? Ovi volumes su mi užasno zbunjujući 🙁
Kako god napravim javlja mi NoSuchFileException: readings.csv
djurag
laranotreallycroft nije problem u dockerima nego u .jar datoteci. Ovisno o tome gdje se nalazi readings.csv unutar strukture projekta moguce je da uopce nije ukljucena u .jar datoteku. U svakom slucaju drugacije se pristupa .csv datoteci ako je zapakirana ju .jar datoteku. Ima vise mogucih nacina, ali najbolje na google naci nesto najjednostavnije….
laranotreallycroft
dj yeah, bila sam pokleknula pa sam slala mail
evo odg ako ce kome trebat
Erpeg
laranotreallycroft
meni to ne radi, probao sam nacin pod 2 i 3
za oboje mi baca ovaj eror
java.io.FileNotFoundException: class path resource [readings.csv] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/opt/app.jar!/BOOT-INF/classes!/readings.csv
halp pls
RogerRoger
Postavio sam config i eureka servere i sva tri mikroservisa, uspjesno su se registrirali, ali kako da ovo testiram?
Pokusavam poslati GET request agregacijskom mikroservisu preko Postmana, ali nikako ne mogu skuziti pravi url. Slanje GET requesta na http://aggregator-microservice/
iz Postmana ne radi, kao ni na http://localhost:8761/aggregator-microservice/
. Stvarno vise nemam ideja.
RogerRoger
Rijesio sam ovaj problem - ispada da je u application.yml mikroservisa trebalo dodati i server: port: <port>
pa se GET request iz Postmana salje na localhost:<port>/
.
Sad, nazalost, imam dva druga problema. Jedan je da mi config server uporno daje konfiguracije iz main/resources u svom vlastitom folderu umjesto iz lokalnog git repozitorija na koji pokazuje application.yml, puta u spring: cloud: config: server: git: uri: file:///<path>
.
Drugi je problem sto nikako ne mogu postici da mi se vrijednosti konfiguracije osvjezavaju bez restartanja mikroservisa. Ubacio sam spring-boot-starter-actuator u dependencye klijenta (agregacijskog mikroservisa), dodao @RefreshScope
iznad klase cija je clanska varijabla tempUnit
s anotacijom @Value(${"tempunit"})
i nakon promjene u aggregator-microservice.yml preko Postmana posaljem prazni POST request na localhost:8888/actuator/refresh
, ali nista se ne dogodi i mjerna jedinica ostane ista.
Prema uputama sa StackOverflowa dodao sam management:
u application.yml agregacijskog mikroservisa tako da je refresh endpoint ukljucen i dobijem response na prazni POST, ali se jedinica ne updatea.
endpoints:
web:
exposure:
include: refresh
Moze li netko pomoci plsssssssssssssssssssss
djurag
RogerRoger
Za prvi problem probaj izbrisati taj .yml fajl tako da budes siguran da ne moze iz njega nista ucitati. U git repozitoriju nije dovoljno samo promijeniti vrijednost nego za svaku promjenu treba napraviti commit da bi se ona ucitala u config server. Ako nije to siguran sam da ima jos 100 mogucih razloga zasto ti ne ucitava 😁
Drugi problem: gdje ti se nalazi taj aggregator-microservice.yml (u nekom mikroservisu ili u git repo)?
RogerRoger
dj hej, riješio sam taj problem, u .yml sam prema nekom tutorialu dodao liniju koja mijenja profil u native. Otkad sam to izbrisao, vuče mi uredno iz lokalnog repozitorija.
Problem s refreshanjem se i dalje nije riješio, svaku promjenu commitam 🙁
Anonimity
o boze, ja dosta toga ovdje ne kuzim, o kojem git repozitoriju se prica? trenutno radim na mikroservisima i radim ih onako kako je obradeno na spring predavanjima, kako da maknem ispisivanje id-a na html fileu? kako se to simulira?
sto bi mikroservis koji agregira trebao iz html-a dobiti tu informaciju?
RogerRoger
BoJack imaš 5 elemenata: config server, Eureka server (config klijent), agregacijski servis (config i Eureka klijent), humidity i temperature servise (oba Eureka klijenti).
Config server sprema konfiguracije u .yml ili .properties datoteke, svejedno je, samo je sintaksa malo drugačija. Po defaultu, te konfiguracije su ti u java/main/resources projekta, ali možeš u application.yml config servera postaviti put do lokalnog git repozitorija iz kojeg će vući .yml ili .properties konfiguracije za ostale servise (nazoveš ih ime-mikroservisa.yml ili ime-mikroservisa.properties i config server usluzi automatski da pravi config ovisno tko traži, po imenu).
Humidity i temperature mikroservisi su REST serveri koji daju očitanja vlažnosti i temperature. Također su Eureka klijenti, registriraju se na Eureka registry da ih se može tražiti po imenu umjesto adresi.
Agregacijski mikroservis je REST server koji daje kombinaciju očitanja vlažnosti i temperature. I on je Eureka klijent, pristupa mu se preko imena pod kojim je registriran, a on preko imena pristupa humidity i temperature mikroservisima šaljući GET requestove. Također, agregator je config klijent i u konfiguraciji sa servera mu se nalazi mjerna jedinica temperature: kelvin ili celzij. Pri obradi GET requesta pretvara mjernu jedinicu temperature ako je potrebno (tj. ako podatak već nije izražen tom mjernom jedinicom).
Znači: korisnik šalje GET na agregator preko Eureke, agregator ima konfiguraciju mjerne jedinice s config servera, šalje GET requestove humidity i temperature servisima preko Eureke, pretvara mjernu jedinicu ako treba i vraća agregirana očitanja kao response.
Gussy
RogerRoger jel onda config server mora imati application.yml fileove za sve mikroservise ili samo za agregatora?
RogerRoger
Koristim Eclipse i Maven, kako se ovo najlakše migrira na Docker?
Pogledao sam tutoriale, ali ne kužim, može li netko objasniti korak po korak pls?
RogerRoger
Opet ja. Dockerizirao sam sranje. Sad se Eureka iz svoje kante neće spojit na config server koji je u svojoj.
Normalno mogu do konfiguracija preko localhost:8888/<servis>/default u browseru, ali Eureka server ne može. Jedino je rješenje suicid.
Klokan
RogerRoger zasto uopce Eureka treba bit “spojena” na config server? Koliko vidim iz arhitekture, nije uopce ni potrebno, nek me netko ispravi ako grijesim?
in1
Klokan tako je
Gussy
moze neko da me uputi sta s ovim application.yml fajlom trebam u agregatoru za pocetak? kako citam ista iz njega itd
WickyWinslow
huba buba Config server mora imati konfiguraciju za sve ukljucujuci i eureka server. Eureka i config server slucaj gdje se treba pricekati da se config pokrene kako bise eureka mogao na njega spojiti i sam zatim pokrenuti je eksplicitno spomenut na predavanjima.
Gussy
WickyWinslow tu piše da se samo treba modificirati agregator da čita konfiguraciju sa konfiguracijskog poslužitelja, ne i ostali mikroservisi
RogerRoger
huba buba ovo je točno. Agregator komunicira s konfiguracijskim serverom.
Temperature i humidity mikroservisi šalju podatke kakvi su u fajlu, agregator radi pretvorbu mjerne jedinice ako je potrebno i zato jedino njemu treba konfiguracija.