在上一篇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。