Created
April 7, 2018 20:22
-
-
Save mertakman/d0683f32555716c5ce265ad11e936332 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package main | |
| import ( | |
| "log" | |
| "github.com/zeromq/goczmq" | |
| ) | |
| func main() { | |
| // Bir router oluşturdum ve 5555 i listen ettirdim | |
| router, err := goczmq.NewRouter("tcp://*:5555") | |
| if err != nil { | |
| log.Fatal(err) | |
| } | |
| defer router.Destroy() | |
| log.Println("router created and bound") | |
| // bitane dealer socket oluşturdum bunu router a bağladım. | |
| dealer, err := goczmq.NewDealer("tcp://127.0.0.1:5555") | |
| if err != nil { | |
| log.Fatal(err) | |
| } | |
| defer dealer.Destroy() | |
| log.Println("dealer created and connected") | |
| //Dealerdan router a Hello mesajı yolladım . | |
| // Burda mesajı frame olarak yolladım . FlagNone da devamında başka mesaj yok demek oluyor. | |
| // yollayacağım mesaj şimdi sonlandı.Haydi bunu dağıt şimdi demek yani. | |
| err = dealer.SendFrame([]byte("Hello"), goczmq.FlagNone) | |
| if err != nil { | |
| log.Fatal(err) | |
| } | |
| log.Println("dealer sent 'Hello'") | |
| // Burda mesajı alıyoruz . RecvMessage i çağırdık. | |
| // Bize iki byteslice döndürecek . | |
| // İlk byte slice , routerin mesajı aynı subjecte subscribe olanlar arasından hangisine | |
| // route edeceğini bilmesi için bize yollayanın uniq adresi . | |
| //İkincisi ise gelen mesajın kendisi. | |
| request, err := router.RecvMessage() | |
| if err != nil { | |
| log.Fatal(err) | |
| } | |
| log.Printf("router received '%s' from '%v'", request[1], request[0]) | |
| // Mesajımız geldi . Loga bastık . Şimdi cevap yolluyoruz . İlk olarak | |
| // dealer in hangi cliente yollayacağını bilmesi için requestle gelen routing | |
| // slice i gonderiyoruz. FlagMore flag ı router a bu mesajın daha devamının | |
| // geleceğini publish etmeden beklemesi gerektigini söylüyor. | |
| err = router.SendFrame(request[0], goczmq.FlagMore) | |
| if err != nil { | |
| log.Fatal(err) | |
| } | |
| log.Printf("router sent 'World'") | |
| // Şimdi cevabı yolluyoruz . Flagnone router'a | |
| // bu mesaj tamamlandı artık publish et diyor | |
| err = router.SendFrame([]byte("World"), goczmq.FlagNone) | |
| if err != nil { | |
| log.Fatal(err) | |
| } | |
| // Şimdi Burda dealer ile reply'i aldık ve yazdırıyoruz. | |
| reply, err := dealer.RecvMessage() | |
| if err != nil { | |
| log.Fatal(err) | |
| } | |
| log.Printf("dealer received '%s'", string(reply[0])) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment