beanstalkd基础使用(C/C++语言)

来源:互联网 发布:小米手机查看网络制式 编辑:程序博客网 时间:2024/06/02 02:59

保证Linux下已有beanstalkd环境,在beanstalkd目录下./beanstalkd -F运行程序

1.在https://github.com/deepfryed/beanstalk-client下载相关的客户端程序
下载后解压,在解压后的目录下进行安装

sudo make install

在/etc/ld.so.conf目录下添加解压后的目录,如:/home/beanstalk-client-master

2.进入目录下的examples目录,里面有C和C++两个文件夹,可以自己选择语言运行

在C目录下输入

gcc example1.c -o example -lbeanstalk./example

example1.c程序解释如下:

#include "beanstalk.h"#include <stdio.h>#include <assert.h>#include <inttypes.h>int main() {    BSJ *job;    char *yaml;    int64_t id;    int a,b,c;    bs_version(&a, &b, &c);    printf("beanstalk-client version %d.%d.%d\n", a,b,c);    int socket = bs_connect("127.0.0.1", 11300);//初始化socket    assert(socket != BS_STATUS_FAIL);  //检查socket是否正常初始化    assert(bs_use(socket,    "test")    == BS_STATUS_OK);//生产者选择管道    assert(bs_watch(socket,  "test")    == BS_STATUS_OK);//消费者选择管道    assert(bs_ignore(socket, "default") == BS_STATUS_OK);//使用ignore命令来删除除了default的任意管道    id = bs_put(socket, 0, 0, 60, "hello world", 11);//生产者put消息到管道内,第一个0是优先级设置,第二个0是延迟时间,60是限制时间,11是发送消息byte数    assert(id > 0);    printf("put job id: %"PRId64"\n", id);    assert(bs_reserve_with_timeout(socket, 2, &job) == BS_STATUS_OK);//消费者选择管道获取待执行的任务,命令阻塞,时间限制为2秒    assert(job);    printf("reserve job id: %"PRId64" size: %lu\n", job->id, job->size);    write(fileno(stderr), job->data, job->size);    write(fileno(stderr), "\r\n", 2);    printf("release job id: %"PRId64"\n", job->id);    assert(bs_release(socket, job->id, 0, 0) == BS_STATUS_OK);//提前释放一个delay的job到Ready队列    bs_free_job(job);    assert(bs_peek_ready(socket, &job) == BS_STATUS_OK);//查找并切换当前tube最先进入准备状态的job)    printf("peek job id: %"PRId64"\n", job->id);    printf("delete job id: %"PRId64"\n", job->id);    assert(bs_delete(socket, job->id) == BS_STATUS_OK);//删除任务    bs_free_job(job);    assert(bs_list_tubes(socket, &yaml) == BS_STATUS_OK);//获取当前管道信息    printf("tubes:\n%s\n", yaml);    free(yaml);    assert(bs_list_tubes_watched(socket, &yaml) == BS_STATUS_OK);//获取消费的管道    printf("tubes-watched:\n%s\n", yaml);    free(yaml);    assert(bs_list_tube_used(socket, &yaml) == BS_STATUS_OK);//获取使用的管道    printf("tube-used: %s\n", yaml);    free(yaml);    assert(bs_stats(socket, &yaml) == BS_STATUS_OK);//获取当前的状态信息    printf("stats:\n%s\n", yaml);    free(yaml);    bs_disconnect(socket);    exit(0);}

输出

beanstalk-client version 1.3.0put job id: 4reserve job id: 4 size: 11hello worldrelease job id: 4peek job id: 4delete job id: 4tubes:---- default- testtubes-watched:---- testtube-used: teststats:---current-jobs-urgent: 0current-jobs-ready: 0current-jobs-reserved: 0current-jobs-delayed: 0current-jobs-buried: 0cmd-put: 4cmd-peek: 0cmd-peek-ready: 1cmd-peek-delayed: 0cmd-peek-buried: 0cmd-reserve: 0cmd-reserve-with-timeout: 4cmd-delete: 4cmd-release: 1cmd-use: 4cmd-watch: 4cmd-ignore: 4cmd-bury: 0cmd-kick: 0cmd-touch: 0cmd-stats: 1cmd-stats-job: 0cmd-stats-tube: 0cmd-list-tubes: 1cmd-list-tube-used: 1cmd-list-tubes-watched: 1cmd-pause-tube: 0job-timeouts: 0total-jobs: 4max-job-size: 65535current-tubes: 2current-connections: 1current-producers: 1current-workers: 1current-waiting: 0total-connections: 4pid: 129109version: 1.8rusage-utime: 5.653140rusage-stime: 9.696525uptime: 3916binlog-oldest-index: 0binlog-current-index: 0binlog-records-migrated: 0binlog-records-written: 0binlog-max-size: 10485760
原创粉丝点击