Skip to content

Instantly share code, notes, and snippets.

@mertakman
Created April 7, 2018 20:22
Show Gist options
  • Select an option

  • Save mertakman/d0683f32555716c5ce265ad11e936332 to your computer and use it in GitHub Desktop.

Select an option

Save mertakman/d0683f32555716c5ce265ad11e936332 to your computer and use it in GitHub Desktop.
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