共勉
"诸君离学校而去了。在社会上立身的困难,恐怕比在学校里求学还要加甚。若非立志奋斗,则以前所受的教育,反足以增加人生的苦恼,或转为堕落的工具。这是诸君所当特别注意的。事业的成功,须经过长时间的辛苦艰难——成功的代价,走过了许多荆棘的路,方才能寻获康庄大道。立志是砍荆棘斧斤,奋斗是劳力。万不可希望以最少的劳力,获最大的成功。" -- 蒋梦麟
Knight's Blog
滴滴海浪技术主管, 前百度资深研发工程师,现居上海。 擅长于大规模的系统平台服务架构。在

- 亿级别搜索平台(sov5.cn)
- 大规模分布式爬虫
- 中间件架设(disconf,CanalX)
- 广告平台(百度联盟广告)
- 租车平台(滴滴租车)
- 语言招聘平台(51tra.com)
- 内容平台(100weidu.com)
- 社区平台(python88.com)
- 资源下载平台(misou.com)
- 计算机图形图像技术(一篇一作)
- 机器学习(一篇一作)

等领域具有颇有经验。
联系方式: knightliao AT gmail.com
联系
Knight's Blog » 工作

spring-amqp-samples中的stocks案例分析

2015-03-05 13:39

spring-amqp-samples中的stocks分析

完整设计图

http://ww1.sinaimg.cn/mw1024/60c9620fgw1epury3n5epj20l40kugoq.jpg

server

server先启动后,会起一个定时线程不断的发消息。由于对应的exchange没有与任何queue绑定,因此,所有消息均丢失。(http://backend.blog.163.com/blog/static/202294126201322563245975/

从下图可以看到,在单独server启动时,此exchange没有与任何queue有binding

http://ww2.sinaimg.cn/bmiddle/60c9620fgw1epttg2jj4gj20iu0i9acm.jpg

此server声明了一个listener,监听的是 app.stock.request 这个Q

client

client启动时,将exchange(app.stock.marketdata)与一个AnonymousQ进行绑定,并有listener进行监听。

这样,上一章节中sever发送的数据就可以顺利的被client监听到(收到消息)。

然后,client会有一个sender,直接会往一个空的exchange发数据,router key是app.stock.request(空的exchange和router key 其实就是这个以router key为名的Q发送数据)。发送时,设置了一个接收消息的replyQ进行收听。

server上监听到clent发送过来的消息,会返回数据,并被client的listener接到。

总结

对于 producer 来讲,只需要声明一个exchange,并往里面写数据就行了。

对于 consumer来讲,需要声明一个exchange和Q,然后将其绑定。然后,声明一个lisenter.

启动时,先启动 consumer,然后再producer,这样就好啦。

1135 次点击