NSQ 简介及教程
What is nsq
NSQ is a realtime distributed messaging platform.
IntroduceLinks
Why use nsq
How to use nsq
Example
Install
docker-compose.yaml
version: '3'
services:
nsqlookupd:
image: nsqio/nsq
command: /nsqlookupd
ports:
- "4160:4160"
- "4161:4161"
nsqd:
image: nsqio/nsq
command: /nsqd --lookupd-tcp-address=nsqlookupd:4160 --broadcast-address=10.1.4.130
depends_on:
- nsqlookupd
ports:
- "4150:4150"
- "4151:4151"
nsqadmin:
image: nsqio/nsq
command: /nsqadmin --lookupd-http-address=nsqlookupd:4161
depends_on:
- nsqlookupd
ports:
- "4171:4171"
TestCase
Consumer
consumer_test.go
package comsumer
import (
"github.com/nsqio/go-nsq"
"log"
"testing"
"time"
)
var (
nsqLookupdAddr = "10.1.4.130:4161"
)
func TestConsumer1(t *testing.T) {
config := nsq.NewConfig()
topic := "t1"
channel := "t1-c1"
c, err := nsq.NewConsumer(topic, channel, config)
if err != nil {
log.Fatalf("init consumer fail, err: %s", err.Error())
}
c.AddHandler(&msgHandler1{
})
// Use nsqlookupd to discover nsqd instances.
// See also ConnectToNSQD, ConnectToNSQDs, ConnectToNSQLookupds.
err = c.ConnectToNSQLookupd(nsqLookupdAddr)
if err != nil {
log.Fatalf("ConnectToNSQLookupd fail, err: %s", err.Error())
}
time.Sleep(time.Duration(100) * time.Minute)
}
func TestConsumer2(t *testing.T) {
config := nsq.NewConfig