// OpenConnection opens and returns a new connection func OpenConnection(tag, network, address string, db int) *redisConnection { redisClient := redis.NewClient(&redis.Options{ Network: network, Addr: address, DB: int64(db), }) name := fmt.Sprintf("%s-%s", tag, uniuri.NewLen(6)) connection := &redisConnection{ Name: name, heartbeatKey: strings.Replace(connectionHeartbeatTemplate, phConnection, name, 1), queuesKey: strings.Replace(connectionQueuesTemplate, phConnection, name, 1), redisClient: redisClient, } if !connection.updateHeartbeat() { // checks the connection log.Panicf("rmq connection failed to update heartbeat %s", connection) } // add to connection set after setting heartbeat to avoid race with cleaner redisErrIsNil(redisClient.SAdd(connectionsKey, name)) go connection.heartbeat() // log.Printf("rmq connection connected to %s %s:%s %d", name, network, address, db) return connection }
func (queue *redisQueue) addConsumer(tag string) string { if queue.deliveryChan == nil { log.Panicf("rmq queue failed to add consumer, call StartConsuming first! %s", queue) } name := fmt.Sprintf("%s-%s", tag, uniuri.NewLen(6)) // add consumer to list of consumers of this queue if redisErrIsNil(queue.redisClient.SAdd(queue.consumersKey, name)) { log.Panicf("rmq queue failed to add consumer %s %s", queue, tag) } // log.Printf("rmq queue added consumer %s %s", queue, name) return name }