NSQ消息队列

前面的总结中提到过这个玩意,所以简单说说,win上面的测试验证

网上有比较合适的博文,我先推荐几篇

https://blog.csdn.net/a2247889821/article/details/82217442

https://blog.csdn.net/lu92649264/article/details/80693030

https://blog.csdn.net/u013735511/article/details/82555419

https://blog.xuanyueting.com/2018/05/19/nsq%E4%BB%8B%E7%BB%8D%E5%92%8Cgo-nsq%E4%BD%BF%E7%94%A8/

https://blog.csdn.net/wangchaoxiaoban/article/details/76037142

我在简化一下,给大家说说几个win什么的东西。

核心组件:

 nsqd.exe 该组件负责接收数据和转发数据。生产者发布数据到这里,消费者来这里取数据。

类似集群部署组件

nsqlookupd.exe 该组件负责管理 nsqd.exe, nsqd.exe向该组件注册,心跳通信,状态获取。nsqlookupd根据心跳确定nsqd是否在线,获取每个nsqd上的主题信息。

辅助工具

 nsqadmin.exe  该组件在消息系统中没有作用,只是一个辅助工具,提供一个网页界面方便查看主题信息,该组件从nsqlookupd获取主题数据并且展示。你可以简单理解成这是一个小web,为你提供信息。

在win上,默认启动是这样的。

这就是大概情况。结合c#的客户端NsqCSharp,给大家解释下。

1.生产者

   客户端例子:

           var producer = new Producer("127.0.0.1:4150");
            producer.Publish("test-topic-name", "Hello!");

      说明:nsqd启动,看图,TCP的默认端口是4150,生产者直接将数据推出。

2.消费者

        var consumer = new Consumer("test-topic-name", "channel-name");
            consumer.AddHandler(new MessageHandler());
            consumer.ConnectToNsqLookupd("127.0.0.1:4161"); 

说明:这里消费端使用的是http,消费端这里的地址是nsqlookupd的http端口,通过该地址获取该主题的nsqd地址,内部再去连接nsqd,这个是当前客户端封装的。

上面这种方式,生产者直接连接nsqd,消费者先通过nsqlookupd获取nsqd,然后再连接,是nsq官方推荐的方式。

 

posted @ 2019-03-25 01:07  IT苦行僧  阅读(727)  评论(0编辑  收藏  举报