Redis kanalına abone olmayı denemek ve yayınlanmış bir iletiyi işlemek için redigo kitaplığını kullanıyorum. Hataların giderildiği durumu nasıl ele alırım? İşte neyle geldiğini. Bunu yapmanın iyi bir yolu var mı? Daha iyi bir yolu var mı?Git'te Redis aboneliğine yeniden bağlanmak için ne tür bir deyim var?
Not: Bu soru redigo'ya özgüdür, ancak yeniden bağlantıların gerçekleşmesi gereken başka yerler için geçerli olduğunu düşünüyorum.
package main
import (
"fmt"
"time"
"github.com/garyburd/redigo/redis"
)
func main() {
for {
fmt.Println("connecting...")
c, err := redis.Dial("tcp", "localhost:6379")
if err != nil {
fmt.Println("error connecting to redis")
time.Sleep(5 * time.Second)
continue
}
psc := redis.PubSubConn{c}
psc.Subscribe("example")
ReceiveLoop:
for {
switch v := psc.Receive().(type) {
case redis.Message:
fmt.Printf("%s: message: %s\n", v.Channel, v.Data)
case redis.Subscription:
fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count)
case error:
fmt.Println("there was an error")
fmt.Println(v)
time.Sleep(5 * time.Second)
break ReceiveLoop
}
}
}
}
Örnek için bunu main() işlevine koydum. Bazı goroutine gerçekten koşardı.