Ես դիտել եմ մի քանի դեմո, այդ թվում՝ Chirper ցուցադրական հավելվածը՝ https://github.com/lagom/lagom-java-sbt-chirper-example
Ծլվլոց ավելացնելը և ծլվլոցների ուղիղ հոսքի առբերումը ավելացվում է նույն ծառայությանը: Սա, կարծես, սովորական պրակտիկա է.
public interface ChirpService extends Service {
ServiceCall<Chirp, NotUsed> addChirp(String userId);
ServiceCall<LiveChirpsRequest, Source<Chirp, ?>> getLiveChirps();
ServiceCall<HistoricalChirpsRequest, Source<Chirp, ?>> getHistoricalChirps();
@Override
default Descriptor descriptor() {
// @formatter:off
return named("chirpservice").withCalls(
pathCall("/api/chirps/live/:userId", this::addChirp),
namedCall("/api/chirps/live", this::getLiveChirps),
namedCall("/api/chirps/history", this::getHistoricalChirps)
).withAutoAcl(true);
// @formatter:on
}
}
Իմ հարցը պտտվում է այն գաղափարի շուրջ, որ դուք կարող եք addChirp
հաղորդագրությունը ներկայացնել հաղորդագրության միջնորդի թեմային (Կաֆկայի գործընթաց)՝ ընթերցումները գրություններից անջատելու նպատակով: Այսինքն՝ գրելը հաջողությամբ կվերադարձնի նույնիսկ այն դեպքում, երբ ընթերցման կողմը (սպառողը) ժամանակավորապես անհասանելի է (այսինքն՝ ծլվլոցը ժամանակավորապես պահվում է Կաֆկայի կողմից սկավառակի վրա, որպեսզի այն վերամշակվի ընթերցման կողմից, երբ այն նորից հասանելի լինի):
Տրամաբանական չի՞ լինի գրելու կողմը կարդալու կողմը առանձնացնել առանձին ծառայությունների և դրանք ընդհանրապես գործարկել տարբեր պորտերի վրա: Թե՞ այս մոտեցումն ունի ընդհանուր թակարդներ: