首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在beanstalkd中使用回调?

如何在beanstalkd中使用回调?
EN

Stack Overflow用户
提问于 2016-12-26 03:18:40
回答 1查看 436关注 0票数 0

有三台机器,一台出版商,两位消费者。我正在用金刚向某台机器发布订单。这台机器是用巨蟒做消费者的。我想知道如何才能得到订单在publisher中已经完成或失败的结果。

如果订单不属于机器一号,我该怎么办?放了还是埋了?

python:使用者:

代码语言:javascript
复制
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

戈朗:出版:

代码语言:javascript
复制
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)
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-26 06:03:39

让发布者知道作业状态的正确方法是使用回调。

在作业中,让发布者放置回调url (队列或http),在作业成功或失败时,使用者可以向状态回调发送状态消息。

因此,工作结构可能会隐约出现

代码语言:javascript
复制
//JobRequest has the struct storing request name and body
type JobRequest struct {
        ID              string
        RequestBody     []byte
        CallbackURL  *string
}

上述结构的json字符串将是body.The使用者将获得CallbackURL并将状态感测到该url的作业。

试图解释为需要解释的细节

让我们打电话给producerconsumer(s)masterworkers(s)

  1. 当作业可用时,母版将创建一个具有
代码语言:javascript
复制
- job id (A unique value to identify teh job)
- RequestBody (The details of the job)
- StatusCallbackURL (URL the worker would hit with the job status)

  1. 其中一个正在听reserve工作的工人说我要去做这份工作。
  2. 解码json并获取作业详细信息.Now完成工作
  3. 在成功的delete中,任务从队列发送到CallbackURL
  4. 如果非临时故障将状态发送给CallbackURL和delete作业,则为失败
  5. 如果临时故障不起任何作用,就像在预留超时之后一样,它将被重新排队。

现在,这个对象被转换为json并放入队列。

PS:在成功完成.On完成或永久失败之前不删除作业,只删除作业

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41326122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档