Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.

[RASSUS] 3. laboratorijska vježba - 2021/2022

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.


WickyWinslow

RogerRoger U ovome se kontekstu pise iskljucivo za funkcionalnost pretvordbe mjernih jedinica moja je interpretacija da to ne znaci ostali ne trebaju biti. Na predavanjima su kao sto sam rekao spomenuli slucaj da eureka cita konfiguraciju sa config servera i da je bilo puno problema i pitanja vezano za njihovo zajednicko pokretanje. Najbolje sluzbeno pitati za odgovor izgleda. Mozda nije potrebno ali better safe then sorry.


RogerRoger

WickyWinslow ideja je da je jedino agregacijski mikroservis “vidljiv” korisniku. Jedino se on konfigurira, čak ni Eureka ne bi trebala (ali može) imati veze s config serverom.
Ovo je službeni odgovor asistenta, ovako je labos zamišljen, samo su upute to nedovoljno definirale. Nije minus ako povežeš i ostale mikroservise, ali izvorna ideja je da je samo agregacijski servis config klijent.


Cvija

Zapeo sam na dijelu s mikroservisom za agregaciju, imam osjećaj da to ne bi trebalo biti jako teško, ali može li me netko uputiti na neku dokumentaciju kako to napraviti ili reći na koji način to napraviti?

Napravio sam servise za temperaturu i vlažnost i oni na GET “/temperature” i GET"/humidity" daju jednu vrijednost za temperaturu, odnosno vlažnost

Jasno mi je da aggregate servis treba poslati GET na /temperature i GET na /humidity, ali ne znam kako to napraviti


WickyWinslow

Cvija Ovo bi ti trebalo pomoci https://www.baeldung.com/rest-template


tata

kak da untar aggregator controllera procitam ovaj unit?
kad odem na http://localhost:8083/application/default ovo vidim:

Ovo mi je radilo kad sam citao iz application.properties (onaj dio bez Config servera):
@Value(“${unit}”)
private String unit;


Gussy

NISAM ASISTENT ako ti je taj application file onaj sta treba biti na config serveru, onda ga moras nazvati aggregator.yml/aggregator.properties, ako si nazva application aggregator, onda ce ti on automatski citati config file sa njegovim imenom sa servera


tata

tj radi mi, ali moram zaustavit mikroservis i ponovno pokrenut (iako imam onaj refreshScope)


RogerRoger

NISAM ASISTENT stavi @RefreshScope iznad headera klase koja vuče tu vrijednost. Ne bi trebalo praviti razliku, ali meni je proradilo kad sam ga stavio iznad imena, a ispod anotacije @Service.
Osim toga, trebaš dodati Spring Boot Actuator u dependencye, a u application.yml servisa za koji želiš da se osvježava stavi i management:
endpoints:
web:
exposure:
include: refresh
. Ni nakon ovoga ti se neće samo osvježavati, nego nakon svake promjene vrijednosti u repozitoriju moraš poslati prazni POST request na http://<adresa-mikroservisa>:<port>/actuator/refresh, a kao odgovor bi trebao dobiti imena vrijednosti koje su se promijenile. Ovo napraviš npr. koristeći Postman.


Gussy

u onoj njihovoj strukturi direktorija, jel onaj config samo predstavlja onaj git repozitorij ili sto bi to trebalo biti?


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


laranotreallycroft

Erpeg nez, moje izgleda ovak i radilo mi je iz prve
Resource resource = resourceLoader.getResource("classpath:readings.csv");
File file = resource.getFile();


Erpeg

laranotreallycroft
meni identicno izgleda
i readings.csv ti je u src/main/resources folderu ?


laranotreallycroft

Erpeg da


Gussy

Erpeg meni ti je bio isti problem, morao sam umjesto File file = resource.getFile() koristiti inputstream. msm da ti nakon ovog getresource(..) mozes pozvat metodu getinputstream()
nakon toga u konstruktoru od onog csvtobeanbuilder moras staviti new InputStreamReader umjesto FileReader


Cvija

huba buba Jesi to ovako napravio? S tim da je readings.csv u resources mapi

I kako vam docker compose datoteke izgledaju, što tu krivo radim?

docker-compose-services.yml

version: "3.9"
services:
        temperature-microservice:
                image: temperature_1.0
                ports:
                        - "8090:8090"
        humidity-microservice:
                image: humidity_1.0
                ports:
                        - "8091:8091"
        aggregate-microservice:
                image: aggregate_1.0
                ports:
                        - "8080:8080"
                depends_on:
                        - temperature-microservice
                        - humidity-microservice
networks:
        default:
                external:
                        name: "microservices"

docker-compose-infrastructure.yml

version: "3.9"
services:
        config-server-microservice:
                image: config_1.0
                ports:
                        - "8888:8888"
        eureka-server:
                image: eureka_1.0
                ports:
                        - "8761:8761"
networks:
        default:
                external:
                        name: "microservices"

s tim da je mreža microservies stvorena s docker network create microservices


Erpeg

uspio sam to rjesit sa inputstream
napomena - sve funkcionalnosti rade bez dockera
sad imam problem da se niti jedan servis ne zeli registrirat sa eurekom - error

equest for "http://localhost:8761/eureka/apps/CONFIG-SERVER-MICROSERVICE/f7120f88df17:config-server-microservice:8084": Connect to localhost:8761 [localhost/127.0.0.1] failed: Connection refused; nested exception is org.apache.http.
conn.HttpHostConnectException: Connect to localhost:8761 [localhost/127.0.0.1] failed: Connection refused stacktrace=org.springframework.web.client.ResourceAccessException: I/O error on PUT request for "http://localhost:8761/eureka/
apps/CONFIG-SERVER-MICROSERVICE/f7120f88df17:config-server-microservice:8084": Connect to localhost:8761 [localhost/127.0.0.1] failed: Connection refused; nested exception is org.apache.http.conn.HttpHostConnectException: Connect to
 localhost:8761 [localhost/127.0.0.1] failed: Connection refused

i aggregator baca ovaj error

gController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'readingService': Injection of autowire
d dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'unit' in value "${unit}"

jel moguce da je ovo povezano sa git repo ?
ak da, di da njega stavim haha

itko imao slicnih problema ?


Erpeg

Erpeg
ok, naci niti jedan servis unutar dockera ne moze vidjet drugi microservis, a tako se onda nemoze niti povezat na njega
jel netko imao ovaj problem ?


WP_Deva

Savjeti za nekoga tko kreće sutra i treba sjajno odradit ovaj labos u 2 dana? 🙂


PepGuardiola

Pokušavam spremati “očitanja” u bazu nakon što dođe zahtjev na aggregator-microservice. Na postman dođe odgovor kakav očekujem, taj rezultat se spremi u bazu, ali u bazi uvijek imam samo to zadnje očitanje.

Ima netko ideju u čemu je problem?


vidraKida

PepGuardiola trebao bi prilikom pokretanja servisa sve procitat i onda sve spremit u bazu odmah?


PepGuardiola

Na teamsu su rekli da nije bitno hoćemo li odmah sve spremat ili pojedino očitanje nakon što dođe zahtjev. Ja sam odlučio radit na ovaj drugi način, ali mi uvijek ostane u bazi samo to zadnje spremleno makar ne restartam microservise.


« Prethodna stranica Sljedeća stranica »