gobeanstalk 基于 Go 的 beanstalkd 客户端 gobeanstalk

polaris • 2433 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
# go-beanstalk 是[beanstalkd](https://github.com/kr/beanstalkd) 的GO语言的一个客户端. 项目还在开发中,欢迎大家提意见 # [](https://github.com/liuzhengyang/gobeanstalk/blob/master/README-zh_CN.md#介绍)介绍 [beanstalkd](https://github.com/kr/beanstalkd)是一个快速的、有各种用途的延迟队列 和定时任务的不同点: 定时任务以一定的周期或者在某个特定的时间运行。beanstalk可以在延迟一段时间执行。 一些使用场景: * 用户下单5分钟后检查用户是否完成了支付 * 一分钟后开始一个新的程序 # [](https://github.com/liuzhengyang/gobeanstalk/blob/master/README-zh_CN.md#如何使用)如何使用 ## [](https://github.com/liuzhengyang/gobeanstalk/blob/master/README-zh_CN.md#maclinux)Mac&amp;Linux ### [](https://github.com/liuzhengyang/gobeanstalk/blob/master/README-zh_CN.md#安装并启动beantalkd服务器)安装并启动beantalkd服务器 git clone https://github.com/kr/beanstalkd cd beanstalkd make ./beanstalkd # [](https://github.com/liuzhengyang/gobeanstalk/blob/master/README-zh_CN.md#使用示例)使用示例 go get github.com/liuzhengyang/gobeanstalk create a test.go file package main import ( &#34;fmt&#34; &#34;github.com/liuzhengyang/gobeanstalk&#34; ) func main() { addr := &#34;localhost:11300&#34; // define server address newConn := gobeanstalk.NewConnection(addr) // create new connection channel := make(chan int) // create int channel putFunc := func() { // define a function which put some message to one tube id, _ := newConn.PutWithTube(&#34;hello&#34;, &#34;test2&#34;, 1) channel &lt;- id } go putFunc() // run previous function in a go-routine id := &lt;-channel // wait until we finish putting fmt.Printf(&#34;Receive from channel message of another goroutine %d\n&#34;, id) listenChannel := make(chan string) // make a listen channel for receiving results dealFunc := func(body string) bool { // define a function to deal with tube messages fmt.Printf(&#34;receive %s\n&#34;, body) listenChannel &lt;- body return true } go newConn.Listen(&#34;test2&#34;, dealFunc) // run deal function in a specified go-routing body := &lt;-listenChannel // wait our message fmt.Printf(&#34;Listen once %s\n&#34;, body) newConn.Close() // Close connection } And run this go run test.go # [](https://github.com/liuzhengyang/gobeanstalk/blob/master/README-zh_CN.md#介绍)介绍 [beanstalkd](https://github.com/kr/beanstalkd)是一个快速的、有各种用途的延迟队列 和定时任务的不同点: 定时任务以一定的周期或者在某个特定的时间运行。beanstalk可以在延迟一段时间执行。 一些使用场景: * 用户下单5分钟后检查用户是否完成了支付 * 一分钟后开始一个新的程序 # [](https://github.com/liuzhengyang/gobeanstalk/blob/master/README-zh_CN.md#如何使用)如何使用 ## [](https://github.com/liuzhengyang/gobeanstalk/blob/master/README-zh_CN.md#maclinux)Mac&amp;Linux ### [](https://github.com/liuzhengyang/gobeanstalk/blob/master/README-zh_CN.md#安装并启动beantalkd服务器)安装并启动beantalkd服务器 <pre>git clone https://github.com/kr/beanstalkd cd beanstalkd make ./beanstalkd</pre> # [](https://github.com/liuzhengyang/gobeanstalk/blob/master/README-zh_CN.md#使用示例)使用示例 <pre>go get github.com/liuzhengyang/gobeanstalk</pre> create a test.go file <pre>package main import ( &#34;fmt&#34; &#34;github.com/liuzhengyang/gobeanstalk&#34; ) func main() { addr := &#34;localhost:11300&#34; // define server address newConn := gobeanstalk.NewConnection(addr) // create new connection channel := make(chan int) // create int channel putFunc := func() { // define a function which put some message to one tube id, _ := newConn.PutWithTube(&#34;hello&#34;, &#34;test2&#34;, 1) channel &lt;- id } go putFunc() // run previous function in a go-routine id := &lt;-channel // wait until we finish putting fmt.Printf(&#34;Receive from channel message of another goroutine %d\n&#34;, id) listenChannel := make(chan string) // make a listen channel for receiving results dealFunc := func(body string) bool { // define a function to deal with tube messages fmt.Printf(&#34;receive %s\n&#34;, body) listenChannel &lt;- body return true } go newConn.Listen(&#34;test2&#34;, dealFunc) // run deal function in a specified go-routing body := &lt;-listenChannel // wait our message fmt.Printf(&#34;Listen once %s\n&#34;, body) newConn.Close() // Close connection }</pre> And run this <pre>go run test.go</pre>
授权协议:
GPL
开发语言:
Google Go 查看源码»
操作系统:
跨平台
2433 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传