spring amqp股票交易(一)

来源:互联网 发布:小志传奇翅膀进阶数据 编辑:程序博客网 时间:2024/04/28 18:21
参考资料:http://docs.spring.io/spring-amqp/docs/1.4.0.RC1/reference/html/sample-apps.html#d4e1655  的5.3 Stock Trading
Spring AMQP官方例子Stock Trading使用到了Topic Exchange.所以建议先了解Topic Exchange.RabbitMQ实现了AMQP 0.9.1规范(下载链接:http://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf).其中2.1.2 Message Flow图展示了message的流向,从图中看出Exchange扮演代理者的角色.再了解3.1.3.3  The Topic Exchange Type,Topic Exchange类型是如何工作的,还提到路由表达式的*和#的意义.
第一点:服务端(此处指的是rabbitmq客户端Publisher)推送投票报价信息到一个Topic Exchange,客户端(可以为是rabbitmq客户端Consumer)通过使用路由表达式绑定队列来订阅报价信息.
第二点:还演示了由客户端先初始化,服务端处理的请求-回复"股票交易"的交互.


由于篇幅关系,会在本文最后贴上上传的源码地址.(会将https://github.com/spring-projects/spring-amqp-samples部分用不到的代码先移除,以便查看理解).
此文先实现第一点
一.配置服务端和客户端连接RabbitMq服务器的基类AbstractStockAppRabbitConfiguration.此类定义服务端和客户端公共使用的东东.
其中定义了一个TopicExchange和这个TopicExchange使用的名字app.stock.marketdata,RabbitTemplate使用JsonMessageConverter而不是默认的SimpleMessageConverter.还使用到了模板方法设计模式.其它的与上一篇文章没有多大区别.


二.服务端(用来推送消息)
1.Rabbit配置:通过这种设计模式设置RabbitTemplate来指定Exchange的名字.
2.通过RabbitMarketDataGateway的sendMarketData方法实现.
a.Quote(股票报信息)就是Message的载体,generateFakeQuote方法:随机获得一支股票和随机生成一个价格构造Quote对象.
b.使用股票的StockExchange和Ticker来构造routingKey进行推送消息.此routingKey是以app.stock.quotes.开头的.订阅者(客户端)是根所此key来获取匹配信息的.
3.这个方法是通过定时任务模拟每隔5s进行触发.(其实这时可以启动spring容器进行推送消息了,但没有订阅者)


三.客户端(订阅并接收信息)
1.Rabbit配置:rabbitTemplate可不修改.指定了一个匿名队列,并将此队列使用指定的routingKey进行绑定,也就是订阅.还配置SimpleMessageListenerContainer来对消息如何进行处理.这里的处理就交给了ClientHandler.handleMessage方法.
2.ClientHandler.handleMessage方法只是使用log4j记录一下股票代码与价格,其它我都去掉了(包括jgoodies的swing界面显示).


四.模拟测试.
1.启动test里面的Server.main和Client方法来启动,两者启动的顺序不限.

2.修改test下面的client.properties的stocks.quote.pattern为"app.stock.quotes.#",这样两种股票都可以订阅了,重新启动测试


源码:http://download.csdn.net/detail/xiejx618/8139945


由于收到"很遗憾,您上传的资源spring amqp股票交易 一因资源违规没有通过审核,如有疑问,请联系webmaster@csdn.net," 可能由于某人举报,但里面的代码整理过的,不应是违规,让那些小人先乐下吧,既然如此,就不上传了.

0 0