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条。

  • 相关阅读:
    一些你可能用到的代码
    iOS 键盘下去的方法
    iOS设计模式汇总
    随笔
    Spring cloud config 分布式配置中心 (三) 总结
    Spring cloud config 分布式配置中心(二) 客户端
    Spring cloud config 分布式配置中心(一) 服务端
    jdbcUrl is required with driverClassName spring boot 2.0版本
    JpaRepository接口找不到 spring boot 项目
    解决IntelliJ “Initialization failed for 'https://start.spring.io'
  • 原文地址:https://www.cnblogs.com/lusf/p/3257472.html
Copyright © 2011-2022 走看看