मैं रेडिगो चैनल की सदस्यता लेने के लिए रेडिगो लाइब्रेरी का उपयोग कर रहा हूं और फिर प्रकाशित संदेश को संभालता हूं। मैं उस मामले को कैसे संभाल सकता हूं जहां यह त्रुटियां हैं? यहां मैं क्या आया था। क्या यह करने का यह एक अच्छा तरीका है? क्या कोई बेहतर तरीका है?गो में रेडिस सदस्यता से पुनः कनेक्ट करने का एक बेवकूफ तरीका क्या है?
नोट: यह प्रश्न रेडिगो के लिए विशिष्ट है, लेकिन मुझे लगता है कि यह अन्य स्थानों पर लागू होता है जहां पुन: कनेक्शन की आवश्यकता होती है।
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
}
}
}
}
मैंने इसे उदाहरण के लिए मुख्य() फ़ंक्शन में रखा है। यह वास्तव में कुछ goroutine में भाग जाएगा।