acl
3.5.3.0
|
#include <beanstalk.hpp>
Public 成员函数 | |
beanstalk (const char *addr, int conn_timeout, bool retry=true) | |
~beanstalk () | |
bool | use (const char *tube) |
unsigned long long | put (const void *data, size_t len, unsigned pri=1024, unsigned delay=0, unsigned ttr=60) |
unsigned long long | format_put (unsigned pri, unsigned delay, unsigned ttr, const char *fmt,...) ACL_CPP_PRINTF(5 |
unsigned long long unsigned long long | vformat_put (const char *fmt, va_list ap, unsigned pri=1024, unsigned delay=0, unsigned ttr=60) |
unsigned long long | format_put (const char *fmt,...) ACL_CPP_PRINTF(2 |
unsigned long long unsigned | watch (const char *tube) |
unsigned | ignore (const char *tube) |
unsigned | ignore_all () |
unsigned long long | reserve (string &buf, int timeout=-1) |
bool | delete_id (unsigned long long id) |
bool | release (unsigned long long id, unsigned pri=1024, unsigned delay=0) |
bool | bury (unsigned long long id, unsigned pri=1024) |
bool | touch (unsigned long long id) |
bool | open () |
void | close () |
void | quit () |
unsigned long long | peek (string &buf, unsigned long long id) |
unsigned long long | peek_ready (string &buf) |
unsigned long long | peek_delayed (string &buf) |
unsigned long long | peek_buried (string &buf) |
int | kick (unsigned n) |
bool | list_tube_used (string &buf) |
bool | list_tubes (string &buf) |
bool | list_tubes_watched (string &buf) |
bool | pause_tube (const char *tube, unsigned delay) |
const char * | get_error () const |
socket_stream & | get_conn () |
const char * | get_addr () const |
额外继承的成员函数 | |
Protected 成员函数 继承自 acl::acl::noncopyable | |
noncopyable () | |
~noncopyable () | |
消息 ID 号从 1 开始递增(参加 beanstalkd 的 job.c 源程序中的如下内容: static uint64 next_id = 1; 及 make_job_with_id() 中的 if (id) { j->r.id = id; if (id >= next_id) next_id = id + 1; } else { j->r.id = next_id++; } 消息优先级 pri 的取值范围为 0 ~ 4,294,968,295(最大无符号整数值),值越小 则优先级别越高,最高级别为 0 级 消息体默认最大长度为 65,535(最大无符号 short 值),该值可以在启动 beanstalkd 指定 更多内容请参考本项目 doc/ 目录下的 <beanstalk协议介绍.pdf> 本类中的命令过程内部会自动进行连接操作,在重连过程中,如果之前设置了 watch 及 use 队列,则会自动重试这些命令过程,所以一般来说不用显式调用 open 过程;当用户调用了 close 函数后,不仅断开了与 beanstalkd 服务器的连接,同时会清除本类对象中存储的 use 及 watch 队列
在文件 beanstalk.hpp 第 33 行定义.
acl::beanstalk::beanstalk | ( | const char * | addr, |
int | conn_timeout, | ||
bool | retry = true |
||
) |
构造函数
addr | {const char*} beanstalkd 地址,格式:ip:port/domain:port |
conn_timeout | {int} 连接服务器的超时时间(秒) |
retry | {bool} 如果连接断了是否自动重连 |
acl::beanstalk::~beanstalk | ( | ) |
bool acl::beanstalk::bury | ( | unsigned long long | id, |
unsigned | pri = 1024 |
||
) |
将一个消息的状态置为 "buried", Buried 消息被放在一个FIFO的链表中, 在客户端调用kick命令之前,这些消息将不会被服务端处理
id | {unsigned long long} 消息号 |
pri | {unsigned int} 优先级别 |
void acl::beanstalk::close | ( | ) |
显示关闭与 beanstalkd 的连接,当该类实例析构时会尝试调用关闭过程, 调用本函数后,类对象内部的 tube_used_ 及 tubes_watched_ 会被释放
bool acl::beanstalk::delete_id | ( | unsigned long long | id | ) |
从队列服务器中删除指定 ID 号的消息
id | {unsigned long long} 消息号 |
unsigned long long acl::beanstalk::format_put | ( | unsigned | pri, |
unsigned | delay, | ||
unsigned | ttr, | ||
const char * | fmt, | ||
... | |||
) |
以格式字符串方式向所选管道或缺省管理中发送消息
pri | {unsigned} 优先级,值越小,优先级越高 |
delay | {unsigned} 表示将job放入ready队列需要等待的秒数 |
ttr | {unsigned} 表示允许一个worker执行该消息的秒数 |
fmt | {const char*} 格式字符串 |
unsigned long long acl::beanstalk::format_put | ( | const char * | fmt, |
... | |||
) |
以格式字符串方式向所选管道或缺省管理中发送消息,其中的 的 pri, delay, ttr 采用默认值
fmt | {const char*} 格式字符串 |
|
inline |
返回构造函数中 beanstalkd 的服务器地址,格式:ip:port
在文件 beanstalk.hpp 第 286 行定义.
|
inline |
在文件 beanstalk.hpp 第 277 行定义.
|
inline |
在文件 beanstalk.hpp 第 272 行定义.
unsigned acl::beanstalk::ignore | ( | const char * | tube | ) |
取消关注(watch)一个接收消息的管道(tube)
tube | {const char*} 消息管道名称 |
unsigned acl::beanstalk::ignore_all | ( | ) |
取消关注所有的接收消息的管道
int acl::beanstalk::kick | ( | unsigned | n | ) |
该命令只能针对当前正在使用的tube执行;它将 buried 或者 delayed 状态的消息移动到 ready 队列
n | {unsigned} 表示每次 kick 消息的上限, 服务端将最多 kick 的消息数量 |
bool acl::beanstalk::list_tube_used | ( | string & | buf | ) |
获得客户当前正在使用的消息管道
buf | {string&} 存储当前使用的消息管道,函数内部会先清空该缓冲区 |
bool acl::beanstalk::list_tubes | ( | string & | buf | ) |
获得已经存在的所有消息管道(tube)的列表集合
buf | {string&} 存储结果,函数内部会先清空该缓冲区 |
bool acl::beanstalk::list_tubes_watched | ( | string & | buf | ) |
获得当前关注(watch)的消息管道的集合
buf | {string&} 存储结果,函数内部会先清空该缓冲区 |
bool acl::beanstalk::open | ( | ) |
连接 beanstalkd 服务器,通常情况下不需要显示地调用该函数,上述命令 会自动根据需要自动调用本函数
bool acl::beanstalk::pause_tube | ( | const char * | tube, |
unsigned | delay | ||
) |
给定时间内暂停从指定消息管道(tube)中获取消息
tube | {const char*} 消息管道名 |
delay | {unsigned} 指定时间段 |
unsigned long long acl::beanstalk::peek | ( | string & | buf, |
unsigned long long | id | ||
) |
获取消息队列中指定的消息号的数据
buf | {string&} 如果消息存在则存储该条消息,函数内部会先清空该缓冲区 |
id | {unsigned long long} 指定的消息号 |
unsigned long long acl::beanstalk::peek_buried | ( | string & | buf | ) |
获得当前关注 (watch) 管道中的一条 buried 状态消息, 如果消息不存在也立即返回
buf | {string&} 如果消息存在则存储该条消息,函数内部会先清空该缓冲区 |
unsigned long long acl::beanstalk::peek_delayed | ( | string & | buf | ) |
获得当前关注 (watch) 管道中的一条 delayed 状态消息, 如果消息不存在也立即返回
buf | {string&} 如果消息存在则存储该条消息,函数内部会先清空该缓冲区 |
unsigned long long acl::beanstalk::peek_ready | ( | string & | buf | ) |
获得当前关注 (watch) 管道中的一条 ready 状态消息, 如果消息不存在也立即返回
buf | {string&} 如果消息存在则存储该条消息,函数内部会先清空该缓冲区 |
unsigned long long acl::beanstalk::put | ( | const void * | data, |
size_t | len, | ||
unsigned | pri = 1024 , |
||
unsigned | delay = 0 , |
||
unsigned | ttr = 60 |
||
) |
向所选管道或缺省管理中发送消息
data | {const void*} 消息数据地址,可以是二进制 |
len | {size_t} data 数据体长度 |
pri | {unsigned} 优先级,值越小,优先级越高 |
delay | {unsigned} 表示将job放入ready队列需要等待的秒数 |
ttr | {unsigned} 表示允许一个worker执行该消息的秒数 |
void acl::beanstalk::quit | ( | ) |
显示通知 beanstalkd 服务器退出连接(服务器收到此命令后会立即关闭连接)
bool acl::beanstalk::release | ( | unsigned long long | id, |
unsigned | pri = 1024 , |
||
unsigned | delay = 0 |
||
) |
将一个已经被获取的消息重新放回ready队列(并将job状态置为 "ready"), 让该消息可以被其它连接获得
id | {unsigned long long} 消息号 |
pri | {unsigned} 优先级别 |
delay | {unsigned} 在该消息被放入ready队列之前需要等待的秒数 |
unsigned long long acl::beanstalk::reserve | ( | string & | buf, |
int | timeout = -1 |
||
) |
从消息输出管道中获取一条消息,但并不删除消息,可以设置 等待超时,如果设为 -1 则永远阻塞等待消息可用
buf | {string&} 存储获得的一条消息,函数内部会先清空该缓冲区 |
timeout | {int} 等待队列服务器返回消息的超时值,当为 -1 时,则无限期等待,当 > 0 时,则在该时间内若没有消息,则返回, 当 == 0 时,则立即返回一条消息或返回超时 |
bool acl::beanstalk::touch | ( | unsigned long long | id | ) |
允许一个worker请求在一个消息获取更多执行的时间。这对于那些需要 长时间完成的消息是非常有用的,但同时也可能利用TTR的优势将一个消息 从一个无法完成工作的worker处移走。一个worker可以通过该命令来告诉 服务端它还在执行该job (比如:在收到DEADLINE_SOON是可以发生给命令)
id | {unsigned long long} 消息号 |
bool acl::beanstalk::use | ( | const char * | tube | ) |
选择所用的发送管道
tube | {const char*} 管道名称 |
unsigned long long unsigned long long acl::beanstalk::vformat_put | ( | const char * | fmt, |
va_list | ap, | ||
unsigned | pri = 1024 , |
||
unsigned | delay = 0 , |
||
unsigned | ttr = 60 |
||
) |
unsigned long long unsigned acl::beanstalk::watch | ( | const char * | tube | ) |
选择读取消息的管道,将其加入监控管理列表中, 不调用本函数,则使用缺省的管道(default)
tube | {const char*} 消息管道名称 |