加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用nsqlookupd来推送消息

发布时间:2020-12-16 18:27:00 所属栏目:大数据 来源:网络整理
导读:使用nsqlookupd来推送消息 其实有点儿文不对题,不是使用nsqlookupd来推送的,最终还是使用nsqd来进行推送。 nsq的golang客户端中,consumer实现了从nsqlookupd中动态拉取服务列表,并进行消费,但是producer中没有实现这个,假设有N个nsqd节点,某一个不可

使用nsqlookupd来推送消息

其实有点儿文不对题,不是使用nsqlookupd来推送的,最终还是使用nsqd来进行推送。

nsq的golang客户端中,consumer实现了从nsqlookupd中动态拉取服务列表,并进行消费,但是producer中没有实现这个,假设有N个nsqd节点,某一个不可用了,那么不就完蛋了?

于是今天自己封装了一个producer,用来实现从nsqlookupd中拉取nsqd列表,并进行消息推送。

nsq是一个分布式的消息队列,nsqd可以自由地进行扩充,灵活性很大,假设线上有一个nsqd挂了,那么可以从nsqlookupd中获取别的可用列表,进行消息推送,这是基本的实现思路。

大概按以下的步骤走:

1.从nsqlookupd的api中获取所有的可用nsqd列表,首先我们的nsqlookupd也必须配置成多台服务器,以免一台不可用的情况下,整个服务都失效的问题。

2.获取了可用的nsqd列表后,遍历服务列表,进行连接,只要有一个连接可用,那么就缓存这个连接,并返回。

3.当进行推送消息的操作的时候,获取可用连接,当推送失败的时候,重新进行第二步来获取连接。

整个逻辑很简单,自己封装了一个:
nsqproducer

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读