zoukankan      html  css  js  c++  java
  • 队列memcacheq 服务安装与原理

    memcacheQ是一个单纯的分布式消息队列服务。它的安装依赖于BerkeleyDB 和 libevent,所以要先安装这BerkeleyDB和libevent:

    一,BerkeleyDB

    1. 下载软件包,http://download.oracle.com/berkeley-db/db-5.0.21.tar.gz
    2. 解压缩后,cd build_unix
    3. ../dist/configure
    4. make
    5. sudo make install

    二,libevent (需要1.4.x 或更高)

    1. 下载软件包:http://monkey.org/~provos/libevent/
    2. 解压缩后configure & make & make install

    三,memcacheQ

    1. 下载软件包:http://code.google.com/p/memcacheq/downloads/list
    2. 解压缩,cd进目录
    3. ./configure –with-bdb=/usr/local/BerkeleyDB.5.0 –with-libevent=/usr/local/lib –enable-threads
    4. make
    5. sudo make install

    四,启动memcacheQ

    1. 使用memcacheq -h 的命令来查看命令行选项
    2. 启动memcacheq:memcacheq -d -r -H /data1/memcacheq -N -R -v -L 1024 -B 1024 > /data1/mq_error.log 2>&1

    五,使用

    使用以上命令启动mq后,(注意上面的-B参数表示messag的body长度不能超过1024 bytes),使用mq时只需要用到两个命令:set和get:

    set <queue name> <flags> 0 <message_len>
    
    <put your message body here>
    STORED
    get <queue name>
    
    VALUE <queue name> <flags> <message_len>
    <your message body will come here>
    END

    可以看到,和memcache协议基本一致,只是把key name换成queue name,而且在set的命令中,忽略了expire_time的参数。毕竟mq的数据存储是存在berkeleyDB中,做了持久化存储,没有内存的过期时间。

    当 使用set命令时,就向指定的消息队列中写入了一条新消息,也就是向BerkeleyDB中新insert了一条数据,当使用get命令时,就从 指定队列中取出一条新消息,也就是向BerkeleyDB中delete了一条数据。当使用stats查看一个指定队列时,可以看到这个队列一共接收了多 少消息,其中被取出了多少条。

    示例:

    fengbo@onlinegame-10-121:~$ telnet 127.0.0.1 22202
    Trying 127.0.0.1…
    Connected to 127.0.0.1.
    Escape character is ‘^]’.
    set q4 0 0 5
    hello
    STORED
    set q4 0 0 5
    world
    STORED
    stats queue
    STAT q4 2/0
    END
    get q4
    VALUE q4 0 5
    hello
    END
    stats queue
    STAT q4 2/1
    END

    上面执行了两次set的命令,使用stats queue查看时,可以看到q4的队列中共有消息2条,已取出0条;当使用get取出第一条后,再此使用stats queue查看,q4中消息有2条,其中已取出1条。

  • 相关阅读:
    几个新角色:数据科学家、数据分析师、数据(算法)工程师
    人类投资经理再也无法击败电脑的时代终将到来了...
    Action Results in Web API 2
    Multiple actions were found that match the request in Web Api
    Routing in ASP.NET Web API
    how to create an asp.net web api project in visual studio 2017
    网站漏洞扫描工具
    How does asp.net web api work?
    asp.net web api history and how does it work?
    What is the difference between a web API and a web service?
  • 原文地址:https://www.cnblogs.com/lusf/p/3257472.html
Copyright © 2011-2022 走看看