თუ Kafka დაეცა, რა ხდება მოვლენების გადაცემასთან?
Golang
// მოთხოვნებს კონკურენტული ხდის და პასუხის კოდის ჩვენებას კოდში შეცვალეთ // და შეცდომის შემთხვევაში, გამოიტანეთ მისი ლოგი და გააგრძელეთ დამუშავება package main import "net/http" var addrs = []string{"[link] "[link] "[link] "[link] "[link] "[link] "[link] func main() { var wg sync.WaitGroup data := make(map[string]bool) for _, url := range addrs { wg.Add(1) if !data[url] { data[url] = true go func(url string) { defer wg.Done() resp, err := http.Get(url) if err != nil { log.Println(err) return } log.Println(resp.StatusCode) }(url) } } wg.Wait() }
JSON ტეგებით მოდელი (მაგ., RegisterUserRequest) დომენის მოდელია? როგორ სწორად გავყოთ DTO და დომენის ერთეული?
თქვენ გეცოდინებათ ექსაგონალური არქიტექტურა? ისაუბრე მისი სტრუქტურის შესახებ.
როგორ ხდება შემომავალი მოთხოვნის გადამუშავება handler-ის მეშვეობით დომენის მოდელამდე ჰექსაგონალური არქიტექტურაში, რომელიც შედგება სამი ელემენტისგან: ადაპტერი, პორტი და ცენტრალური აპლიკაცია?
როგორ განვახორციელოთ საპირისპირო მხარე — notification სერვისის მხარეს Inbox ნიმუში? როგორ უზრუნველვყოთ მოვლენების დამუშავების იდემპოტენტობა?
// კოდს სწორად დაარეგულირეთ ისე, რომ მოთხოვნები კონკურენტული იყოს და გამოჩნდეს პასუხის კოდი // და შეცდომის შემთხვევაში, ჩაწერეთ ის ლოგში და გააგრძელეთ დამუშავება package main import "net/http" var addrs = []string{"[link]"} func main() { for _, url := range addrs { resp, err := http.Get(url) if err != nil { log.Error(err) continue } // თუ საჭიროა, process resp } }
აგრეგატი ყოველთვის ერთ ტრანზაქციის დონეზე მუშაობს. DDD-ში აგრეგატების შესახებ კიდევ რა მნიშვნელოვანია იცოდეთ?
დაგიმუშავიათ ოდესმე DDD და CQRS-თან? ამის შესახებ ისაუბრეთ.
მიკროწესის არქიტექტურაში, თითოეული სერვისი აქვს თავისი მონაცემთა ბაზა. თუ Kafka ჯერ კიდევ არ მიუღია შეტყობინება, როგორ მუშაობს Outbox ნიმუში ამ კონტექსტში?
Transactional Outbox ნიმუშის შესახებ ისაუბრეთ — როგორ მუშაობს და რა მიზნით გამოიყენება?