nsq Android客户端,NSQ的golang客户端简单使用

NSQ的golang客户端简单使用

NSQ 是由国外的一个短链服务商bitly使用golang开发的一个消息队列系统,正好使用到了这个东西,在这里简单的记录下。

获取客户端

nsq的golang客户端是官方版本的

go get github.com/nsqio/go-nsq

即可

简单的消费者和生产者使用

该客户端有原始的command函数用于一些基础操作,也有consumer和producer的封装,我这里是直接使用了封装了。

consumer

消费者比较简单,只要监听队列消息,并处理就可以了,下面是一个简单的例子。

type NSQHandler struct {

}

func (this *NSQHandler) HandleMessage(message *nsq.Message) error {

log.Println("recv:", string(message.Body))

return nil

}

func testNSQ() {

waiter := sync.WaitGroup{}

waiter.Add(1)

go func() {

defer waiter.Done()

consumer, err := nsq.NewConsumer("test", "ch1", nsq.NewConfig())

if nil != err {

log.Println(err)

return

}

consumer.AddHandler(&NSQHandler{})

err = consumer.ConnectToNSQD("10.100.156.207:4150")

if nil != err {

log.Println(err)

return

}

select {}

}()

waiter.Wait()

}

创建好consumer后,只需要自己创建一个struct并实现HandleMessage方法即可,当有消息时候,再去处理消息。

需要注意的是,AddHandler的回调是在别的routine中执行的,并且可以添加多个handler用于处理消息,这里可能需要注意下线程的同步问题。

producer

生产者也和消费者差不多,首先需要创建一个producer

func (this *MsgQueue) Init(addr string) error {

var err error

this.addr = addr

// try to connect

cfg := nsq.NewConfig()

this.producer, err = nsq.NewProducer(addr, cfg)

if nil != err {

return err

}

// try to ping

err = this.producer.Ping()

if nil != err {

this.producer.Stop()

this.producer = nil

return err

}

return nil

}

producer封装了较多的方法,分为同步和异步两种。带Async后缀的,都是异步的。

同步是收到了nsq的回应后再返回的函数,所以可能会堵塞,而异步的操作,则调用方需要传入一个chan用于接收结果,当有结果返回或者是超时的情况下,相应的内容会写到该chan中。

在这里我用了同步的api,毕竟消息队列假如出了什么问题,那么整个服务就不可用了,而且同步改异步也不会太麻烦,以后可以做下修改。

publish的方法也很简单,提供一个topic和数据就行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙系统新手教程,鸿蒙灭神决新手入门全流程图文攻略

鸿蒙灭神决新手入门全流程图文攻略2019-03-21 15:04:13来源:天天RPG编辑:野狐禅评论(0)中后期回归主题,如果还是打不过神器2,可以先到“中级挑战”这里完成第一排的四项挑战,可以获得四件道具。从这里开始由于我们刷木…

html中websocket获取数据,如何使用websocket从数据库中获取数据来刷新视图

在标准的Web交互中,客户端(即您的Web浏览器)向您的服务器发送请求。您的服务器收到请求,然后发送回您的浏览器中显示的信息,然后终止连接。WebSockets是一种在客户端和服务器之间创建持久,双向连接的方式,但它需要两者…

流内容html,为什么,和元素属于html中的流内容?

您在引用的部分中通常会忽略这个词.他们中的大多数确实包含文本,但并非所有文本都包含文本.其中一些,如< br>和< hr>您指出的元素不包含任何内容(因此不是typical个流内容元素).Most elements that are used in the body of documents and applications are catego…

html添加工具栏,添加带有命令的工具栏 (HTML)

添加带有命令的工具栏 (HTML)03/04/2016本文内容[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发&#xff0c;请参阅 最新文档 ]ToolBar 是一个简单的控件&#xff0c;用于解决命令扩展问题。它具有一个 …

用计算机解决问题 评课稿,总结反思:二年级数学lbrack;解决问题rsqb;评课稿

二年级数学《解决问题》评课稿二年级数学《解决问题》评课稿今天上午听了一节二年级数学上册用加减混合的常识《解决问题》的课&#xff0c;受益匪浅。我觉得这节课是顺利的&#xff0c;有待我们学习跟借鉴。雷老师虽未年过五旬&#xff0c;但他不服老的敬业精神&#xff0c;以…

计算机信息科学蔺泽浩,上海交通大学计算机科学与工程系(CSE)

脑机交互的多模态疲劳驾驶检测系统本系统通过获取驾驶员的脑电信号(EEG)、眼电信号(EOG)、握力信号和Kinect图像&#xff0c;从生理信号和行为特征中提取与疲劳相关的特征&#xff0c;利用机器学习方法建立疲劳检测模型&#xff0c;实现驾驶员疲劳状态的度量与预测。与传统的基…

分布式认知在计算机应用系统,人机交互作业

1. 人机交互过程中人们经常利用的感知有哪几种&#xff1f;每种感知有什么特点&#xff1f;视觉感知、听觉感知、触觉感知三种。1)视觉感知特点&#xff1a;一方面&#xff0c;眼睛和视觉系统的物理特性决定了人类无法看到某些事物&#xff1b;另一方面&#xff0c;视觉系统进行…

word计算机桌面加密,如何给电脑的Word文件加密

如何给电脑的Word文件加密Word文件是我们在工作和生活中会频繁使用到的&#xff0c;采用适当的方法给需要保护的Word文件加密&#xff0c;可以确保信息安全。这里所讲的加密&#xff0c;是指以某种特殊的方法改变原有的信息数据&#xff0c;使得未经授权的用户即使获得了已加密…

大学计算机一级b笔记,全国计算机等级一级B Excel考试整理笔记

Excel 计算题公式、图表全国计算机等级一级B Excel笔记整理Excel计算题目 2011 -12-5 1.求和&#xff1a;Sum()&#xff1b; 2.填写排列序号:rank; 计算时先输入“”&#xff0c;在加上函数,如”rank”&#xff1b; 3.求平均值&#xff1a;average; 4.求最大值&#xff1a;max;…

梦龙即时通讯软件测试初学者,梦龙即时通讯软件

现在办公都使用社交软件来进行沟通交流&#xff0c;省时省力。梦龙即时通讯软件集企业邮箱管理、日程管理、企业通讯录以及员工互动等功能于一体。能够帮助用户在日常使用中&#xff0c;得到一个高效的体验&#xff0c;有着丰富的办公功能&#xff0c;包括文件的传送&#xff0…

web系统软件测试功能点,小程序、app、web测试的区别

APP的测试类型有• 安装卸载测试&#xff1a;确认系统能正常安装应用及使用&#xff0c;不需要时卸载及数据清除&#xff0c;• 安全测试&#xff1a;防范隐私泄露、密码加密及传输安全、权限的合理开放、数据库安全、通信安全以及安装包反编译&#xff1b;• 接口测试&#xf…

计算机动画制作 教学设计,《设置动画效果》教学设计

《设置动画效果》教学设计溧阳市外国语学校 赵萍教学目标&#xff1a;1、知识目标&#xff1a;掌握三种设置动画效果的方法。2、能力目标&#xff1a;⑴ 通过自我学习&#xff0c;培养学生的自我探索、自主学习的能力。⑵ 通过创作&#xff0c;培养学生综合运用知识的能力及创新…

软件测试除了边界值还有什么,在软件测试中,假定 X 为整数,10≤X≤100,用边界值分析法,那么 X 在测试 中应该取( )边界值...

北方猎人(cnitpm.com) 10:58:42在软件测试中,假定 X 为整数,10≤X≤100,用边界值分析法,那么 X 在测试 中应该取( )边界值.A&#xff0e;X9,X10,X100,X101 B&#xff0e;X10,X100C&#xff0e;X9,X11,X99,X101 D&#xff0e;X9,X10,X50,X100Cheryl-Annie(cnitpm.com) 10:59:15A…

计算机一级添加通讯录好友,电脑企业微信从微信好友中添加成员功能如何使用...

电脑企业微信"从微信好友中添加成员"功能如何使用腾讯视频/爱奇艺/优酷/外卖 充值4折起现在微信推出了企业微信软件&#xff0c;那么今天小编跟大家分享的是电脑企业微信"从微信好友中添加成员"功能如何使用。具体如下&#xff1a;1. 首先我们在电脑中打开…

计算机开机没有找到引导设备,电脑开机显示没有可以引导的设备

电脑是由硬件部分和软件部分构成的&#xff0c;硬件部分一般出现故障的机率不是很高&#xff0c;但是软件故障出现的机率就是非常非常的高了&#xff0c;一些能进系统的软件故障我们一般都是可以自行查资料解决&#xff0c;那么&#xff0c;开机黑屏且显示Reboot and Select Pr…

服务器镜像工作原理,镜像服务器的原理是什么,怎么工作的

镜像服务器的原理是什么&#xff0c;怎么工作的分类&#xff1a;数据恢复常见问题|最后更新&#xff1a;2018年10月22日服务器的种类很多&#xff0c;其中镜像服务器是什么您知道吗?它又有着哪些作用了?下面跟随小编一起来探讨下。镜像服务器(Mirrorserver)与主服务器的服务内…

文件服务器 权限和安全,NTFS安全权限、文件共享服务器

NTFS安全权限一、NTFS权限概述1、通过设置NTFS,实现不同用户访问不同对象(文件&#xff0c;文件夹)的权限2、分配了正确访问权限后&#xff0c;用户才能访问不同的权限3、设置权限防止资源被篡改、删除二、文件系统概述文件系统即在外部存储设备上组织文件的方法常见的文件系统…

我的世界怎么修改服务器文本,《我的世界手机版》如何修改界面文本 自定义语言教程...

原标题&#xff1a;《我的世界手机版》如何修改界面文本 自定义语言教程我的世界手机版中&#xff0c;大家是否厌倦了游戏中枯燥死板的说明以及文字介绍呢&#xff1f;想不想在我的世界手机版中添加一点萌萌哒的元素呢&#xff1f;今天当乐网小编给大家带来的是我的世界手机版的…

win7系统服务器环境配置,win7系统服务器环境配置

win7系统服务器环境配置 内容精选换一换镜像是云耀云服务器运行环境的模板&#xff0c;模板中包含了特定的操作系统和运行环境&#xff0c;有时也额外包括了一些预装的应用软件。通过镜像可以部署特定的软件环境&#xff0c;也可以将云服务器制作镜像以备份环境。镜像分为公共镜…

电脑面上,在电脑桌面上添加文字_在电脑桌面上添加图片

2016-12-27 10:53:551.首先单击鼠标右键&#xff0c;在出现的选项中选择“小工具”2.在小工具里面我们会看到一个”时钟图标“。3.双击此图标或者鼠标放到图标上&#xff0c;按住拖动&#xff0c;即可将时钟移动到桌面上&#xff0c;按住时钟图标&#xff0c;即可...2016-12-15…