golang:高性能消息隊列moonmq的簡單使用

在上一篇moonmq的介紹中(這裏),我僅僅簡短的羅列了一些moonmq的設計想法,但是對於如何使用並沒有詳細說明,公司同事無法很好的使用。

對於moonmq的使用,其實很簡單,樣例代碼在這裏,我們只需要處理好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的支持,使其更容易使用。

moonmq的代碼在這裏https://github.com/siddontang/moonmq

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章