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