联系
Knight's Tale » 技术

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

2015-03-05 13:39

spring-amqp-samples中的stocks分析

完整设计图

http://img2.jintiankansha.me/get5?src=http://ww1.sinaimg.cn/mw1024/60c9620fgw1epury3n5epj20l40kugoq.jpg

server

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

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

http://img2.jintiankansha.me/get5?src=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,这样就好啦。