1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| package main
import ( true"fmt" "os" "path/filepath" "strings" "time"
true"github.com/beanstalkd/go-beanstalk" )
//const BEANSTALKD_ADDR = "127.0.0.1:11300" const BEANSTALKD_ADDR = "192.168.3.21:11300"
const QueueName = "myQueue"
func initBeanstalk() (bool, *beanstalk.Conn) { var conn *beanstalk.Conn truevar err error conn, err = beanstalk.Dial("tcp", BEANSTALKD_ADDR) trueif err != nil { truetruefmt.Println("beanstalk dial err:", err) truetruereturn false, nil true}
trueconn.Tube.Name = QueueName trueconn.TubeSet.Name[QueueName] = true return true, conn }
func send() { fmt.Println("in send") var conn *beanstalk.Conn _, conn = initBeanstalk() if conn == nil { fmt.Println("init error") return } defer conn.Close() for { buf := []byte("hello world") id, err := conn.Put(buf, 1, 0, 120*time.Second) if err != nil { fmt.Println("beanstalk put err:", err) } fmt.Println("beanstalk put id:", id) time.Sleep(time.Millisecond * 2000); }
}
func recv() { fmt.Println("in recv") var conn *beanstalk.Conn _, conn = initBeanstalk() if conn == nil { fmt.Println("init error") return } defer conn.Close() for { id, body, err := conn.Reserve(5 * time.Second) if err == nil { fmt.Println("[", id, "] ", body) conn.Delete(id) }
time.Sleep(time.Millisecond * 200); } }
func main() { filename := filepath.Base(os.Args[0]) if strings.Contains(filename, "send") { send() } else if strings.Contains(filename, "recv") { recv() } else { fmt.Println("do nothing") } }
|