spring-amqp-samples中的stocks分析
server先启动后,会起一个定时线程不断的发消息。由于对应的exchange没有与任何queue绑定,因此,所有消息均丢失。(http://backend.blog.163.com/blog/static/202294126201322563245975/)
从下图可以看到,在单独server启动时,此exchange没有与任何queue有binding
此server声明了一个listener,监听的是 app.stock.request 这个Q
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,这样就好啦。