0
有3台机器和一个发布者,两个消费者。 我正在使用golang将订单发布到某台机器。 而这台机器是用python作为消费者。 我想知道如何获得订单在发布者中完成或失败的结果。如何在beanstalkd中使用回调?
如果订单不属于机器,我该怎么办? 发布还是埋葬?
蟒蛇: 消费者:
import beanstalkc
def get_beanstalk_data(conf):
beanstalk = beanstalkc.Connection(host='127.0.0.1',port=11300)
beanstalk.use('cloud')
beanstalk.watch('cloud')
beanstalk.ignore('default')
job = beanstalk.reserve()
if job.body == "one": #job.body == "two"
#TODO
job.delete()
return job.body
else:
#TODO what should I do in here, because there is two consumer and get different orders
while True:
data = get_beanstalk_data(conf)
print data
golang: 发布:
package main
import (
"fmt"
"github.com/kr/beanstalk"
"time"
)
func main() {
c, err := beanstalk.Dial("tcp", "127.0.0.1:11300")
id, err := c.Put([]byte("hello"), 1, 0, 120*time.Second)
if err != nil {
fmt.Println(err)
}
fmt.Println(id)
}
Thinkyou为您提供帮助。您的意思是在同一台机器上设置发布者和消费者吗?因此,它可以是“发布B(消费者),然后B(发布者)发布A“? – haroldT
不需要在同一台机器上。我们称之为'master'(发行人)和'workers'(消费者)。当主人要求工人做某件事时,任何一个工人都可能拥有这项工作,并且在完成时它必须让主人知道它已经完成了,为此目的,主人可以在作业请求中附上一个“callbaclurl”。 –
谢谢你的解释,所以在beanstalk(golang)或beanstalkc(python)中找不到任何函数。我真的很迷惑。 – haroldT