前面的文章中,我们已经能顺利的启动nsq,发布、消费消息了,接下来,再来看看在Java客户端中我们是如何消费一条消息的呢。
这里的消费者我们用Java客户端的例子来模拟实现:
为了方便调试,我将向nsqlookup查询最新nsq信息的时间间隔,由一分钟一次,改为了十秒一次:
com.github.brainlag.nsq.NSQConsumer#lookupPeriod:
因为消息是被转为字节流进行传输的,为了输出看的更清楚,我在NSQMessage里增加了toString方法。
获取到message后调用toString方法输出。
启动
假设消费者最先启动,它要消费topic为”order_created“的消息,这时候它向nsqlookup调用/lookup接口,试图获取对应topic的nsq。由于nsqlookup还没启动,因此获取失败,不过这并不影响消费者的启动流程,因为它会每隔一段时间,去尝试重新拉取最新的数据。