<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] > [github](https://github.com/nsqio/nsq) > [doc](https://nsq.io/overview/quick_start.html) ## 概述 ![UTOOLS1585108358609.png](http://yanxuan.nosdn.127.net/82a922e1824f96470b86eff0b89c19e1.png) nsq 是一個實時分布式消息傳遞平臺 使用下來我們可以看到,nsq為了提供性能在一些方面是做出了妥協的,我們可以總結出下面幾個方面供大家參考: 1. 暫時nsq的鑒權功能在高版本才支持,但是高版本沒有release所以建議nsq在內網環境下使用,或者在一些安全的端口使用,避免被攻擊 2. 部署節點在3個以上,nsq已經對于消息丟失做了很多的考慮,基本上不會出現丟失的情況,在你考慮冪等性的情況下,同時部署多個節點有利于消息進行處理 3. 如果對消息順序有要求的情況下,nsq是不能使用的,因為nsq不能保證消息的順序 4. 節點之間沒有消息復制,所以即使多個節點部署,萬一節點出現問題,還是有一段時間會出現消息無法接收到的情況,所以向多個節點同時發送消息也是一種解決方式 5. 因為nsq拋棄了一些東西,那么所帶來的自然是方便,整體使用下來主要感受就是輕量,部署和配置都很方便,而且對于節點的監控能有界面 5. 官方也說了,發送消息其實不建議使用客戶端,而建議使用http請求,所以我自己是使用okhttp進行消息的發送 ## 安裝 mac ``` brew install nsq ``` source ``` $ git clone https://github.com/nsqio/nsq $ cd nsq $ make $ ./test.sh ``` ## 實例 ### golang 需先開啟 nsq <details> <summary>生產者</summary> ``` package main import ( "github.com/nsqio/go-nsq" "time" ) func main() { for i := 0 ; i < 10; i++ { sendMessage() } time.Sleep(time.Second * 10) } func sendMessage() { url := "192.168.4.102:4150" producer, err := nsq.NewProducer(url, nsq.NewConfig()) if err != nil { panic(err) } err = producer.Publish("test", []byte("hello world")) if err != nil { panic(err) } producer.Stop() } ``` </details> <br/> <details> <summary>消費者</summary> ``` package main import ( "fmt" "github.com/nsqio/go-nsq" "sync" ) func main() { testNSQ() } type NSQHandler struct { } func (this *NSQHandler) HandleMessage(msg *nsq.Message) error { fmt.Println("receive", msg.NSQDAddress, "message:", string(msg.Body)) return nil } func testNSQ() { url := "192.168.4.102:4150" waiter := sync.WaitGroup{} waiter.Add(1) go func() { defer waiter.Done() config:=nsq.NewConfig() config.MaxInFlight=9 for i := 0; i<10; i++ { consumer, err := nsq.NewConsumer("test", "struggle", config) if nil != err { fmt.Println("err", err) return } consumer.AddHandler(&NSQHandler{}) err = consumer.ConnectToNSQD(url) if nil != err { fmt.Println("err", err) return } } select{} }() waiter.Wait() } ``` </details> <br/>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看