這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
在上一篇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。