zoukankan      html  css  js  c++  java
  • golang:高性能消息队列moonmq的简单使用

    在上一篇moonmq的介绍中(这里),我只简短的罗列了一些moonmq的设计想法,可是对于怎样使用并没有具体说明,公司同事无法非常好的使用。

    对于moonmq的使用,事实上非常easy,例子代码在这里,我们仅仅须要处理好broker,consumer以及publisher的关系就能够了。

    首先,我们须要启动一个broker,由于moonmq如今仅仅支持tcp的自己定义协议,所以broker启动的时候须要指定一个listen address。

    #启动broker
    ./simple_broker -addr=127.0.0.1:11182
    

    启动了broker之后,我们就能够向该broker发送消息

    #向test这个queue发送 hello msg
    ./simple_publisher -addr=127.0.0.1:11182 -queue=test -msg=hello
    

    然后在还有一个shell里面接收消息

    #接收test这个queue的消息
    ./simple_consumer -addr=127.0.0.1:11182 -queue=test
    
    #output get msg: hello
    

    假设没有消息,那么consumer就会一直等待,直到接收到消息。

    这里具体说一下consumer的实现,

    • 创建一个与broker的连接

        //create a client for use
        client := NewClient(config)
      
        //get a usable connection
        conn, _ := client.Get()
      
    • 绑定queue

        //bind a queue
        //queue name : test
        //routingKey : ""
        //noAck : true
        ch, _ := conn.Bind("test", "", true)
      
    • 接收消息

        //receive msg, block to wait until a msg received
        msg := ch.GetMsg()
        println(msg)
      
    • 回执消息

        //if channel noAck is false, we must ack
        ch.Ack()
      

    从上面的样例能够看出,使用moonmq非常方便,兴许我准备增加http的支持,使其更easy使用。

    moonmq的代码在这里https://github.com/siddontang/moonmq

  • 相关阅读:
    hdu 4002 Find the maximum
    hdu 2837 坑题。
    hdu 3123
    zoj Treasure Hunt IV
    hdu 2053 Switch Game 水题一枚,鉴定完毕
    poj 1430 Binary Stirling Numbers
    hdu 3037 Saving Beans
    hdu 3944 dp?
    南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。
    fzu 2171 防守阵地 II
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/3767584.html
Copyright © 2011-2022 走看看