Example #1
0
func pullCommand(conn *gobeanstalk.Conn) {
	var tubesToWatch []string = strings.SplitN(*tube, ",", -1)
	var watchDefault bool = false

	for _, tubeName := range tubesToWatch {
		_, err := conn.Watch(tubeName)
		if err != nil {
			log.Printf("Watch %s failed\n", tubeName)
			log.Fatal(err)
		}
		if tubeName == "default" {
			watchDefault = true
		}
	}

	// As beanstalk by default adds the tube 'default' to the
	// connections watch list, we need to remove it from this
	// connections watch list.
	if watchDefault == false {
		_, err := conn.Ignore("default")
		if err != nil {
			log.Print("Ignore 'default' tube failed\n")
			log.Fatal(err)
		}
	}

	j, err := conn.Reserve()
	if err != nil {
		log.Println("Reserve failed")
		log.Fatal(err)
	}

	err = conn.Delete(j.Id)
	if err != nil {
		log.Printf("Delete failed. Job ID: %d\n", j.Id)
		log.Fatal(err)
	}

	os.Stdout.Write(j.Body)
}