Flex Blazeds推送机制
发布时间:2020-12-15 04:44:49 所属栏目:百科 来源:网络整理
导读:前言: 对于数据实时性页面呈现非常强的业务,通过前台定时刷新这样的效率明显不行。下面通过flex技术来实现这个功能。 思路: 以告警数据为例,告警数据通过mq、socket等方式进入系统,在java服务器通过监听来监听消息队列数据,接收后推送到flex各个客户端
前言:
对于数据实时性页面呈现非常强的业务,通过前台定时刷新这样的效率明显不行。下面通过flex技术来实现这个功能。 思路: 以告警数据为例,告警数据通过mq、socket等方式进入系统,在java服务器通过监听来监听消息队列数据,接收后推送到flex各个客户端。blazeDS采用amf协议。该协议可以传输Object,Array,Date,XML。由于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。数据量越大,Flash Remoting的传输效能就越高,远远超过Web Service。至于XML,LoadVars和loadVariables() ,它们使用纯文本的传输方式,效能就更不能与Flash Remoting相提并论了 本例mq使用activeMq测试,推动到flex的方式采用adobe提供的java flex通信包blazeDS中提供的推送功能, 具体步骤: 一. 创建一个java flex使用blazeDS通信的工程,具体步骤在此不详细说明搭建的步骤。 搭建成功后导入activemq-all-5.1.0.jar,为后面接收activemq消息使用。 二. 配置: 在remoting-config.xml加入推送服务。 <destination id="serverpushserver"> <properties> <source> com.east.flex.serverpush.chart.ServerPushServer </source> </properties> </destination> 1.服务发布 Java代码:ServerPushServer.Java
Java代码?
2.消息处理事务: messageBrokFactory 具有功能:启动mq,并监听mq接收消息,消息推送到flex.三大功能。
2.ActiveMq接收消息的代码见附件工程。在此不列出。 Flex端:本例以一个textarea文本来显示数据。告警数据具体可以使用datagrid 展现代码getMessageClient.mxml
Flex代码?
引用
Java代码?
Java代码?
Java代码?
使用操作: 在第一次打开的页面点击startserver.这个共是启动监听,注意只需要在第一次打开点击了就行,其他打开的页面不需要。再次点击 然后点击autorefesh,用来启动自动显示数据,注意autorefesh这不是自动刷新请求数据。是推动上来的数据。 其他打开的页面都只要点击autorefesh即可。 启动一个acitmvemq在提供的页面发送数据,可以一次发送几千条数据。同事打开几个页面来测试下下过。 [color=red]优化:[/color] 项目最近开始运行发现客户端web非常耗费cpu,非常头疼,当然这与我的数据量肯定是有关系的,我后台推送到前台的数据大约每秒100条。消息量少时streaming没有问题。 后来经过了多种情况的测试,最后发现把streaming设置为polling方式轮询推送占用的cpu资源一下子降了下来。后来吧轮询时间这只为0.3s效果比streaming还好。streaming方式是,消息上来的太快,表格显示时非常闪眼睛,用户没法操作,相反设为polling后这种现象降低了。 总结steaming耗费cpu大的原因是,flex执行死循环时比java执行死循环耗资源打多了。也就是对于一直占用cpu不释放。steaming方式消息量大了也跟执行死循环一样,一直在执行不释放cpu. 下面是改造后的配置 Java代码?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |