三种组件
- nsqd:负责接收消息、存储队列并投递到客户端。nsqd优先将消息存储在内存channel中,channel满则写到磁盘中。
- nsqlookupd: 存储nsqd地址信息,消费者通过查询nsqlookupd以检测需要从哪个nsqd节点上读取消息。nsqd向nsqlookupd的tcp端口广播并注册,注册后消费者能通过nsqlookupd的http端口发现包含指定topic的nsqd结点。
- nsqadmin:一个 Web UI 来实时监控nsq集群。
topic和channel:
最重要的特点是:topic和channel都不会预先设置。topic的创建有两种情况:在由生产者第一次发布指定topic的消息时创建,或者由消费者第一次订阅指定topic的消息时创建。channel在消费者第一次订阅指定的channel时创建。
nsq是无序的
重试
消费者Handler返回一个错误会触发重试,重试消息存储在nsq的Deferred队列,再重新发送到消费者
nsq组件端口之间的关系