`
lch_2010
  • 浏览: 35593 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

flex 消息推送

    博客分类:
  • java
阅读更多

messaging-config.xml 文件

     <destination id="simple-feed">
		<properties>
			<server>
				<allow-subtopics>true</allow-subtopics>
				<subtopic-separator>.</subtopic-separator>
			</server>
		</properties>
	</destination>

applicationContext.xml 文件

 

	<flex:message-broker>
		<flex:message-service
			default-channels="my-streaming-amf,my-longpolling-amf,my-polling-amf" />
	</flex:message-broker>

		<!-- MessageTemplate makes it easy to publish messages -->
	<bean id="defaultMessageTemplate" class="org.springframework.flex.messaging.MessageTemplate" />
	
	<bean id="simpleFeedStarter" class="com.team.gis.service.SimpleFeed">  
   	 	<constructor-arg ref="defaultMessageTemplate" />  
    	<flex:remoting-destination /> 
    	<property name="stationMapper" ref="stationMapper" />
	</bean> 
 

 

flex  文件:

		<mx:ChannelSet id="cs">  
			<mx:AMFChannel url="http://localhost:8080/pipe/messagebroker/amflongpolling"/>  
			<mx:AMFChannel url="http://localhost:8080/pipe/messagebroker/amfpolling"/>  
		</mx:ChannelSet>  
		
		<mx:Consumer id="consumer" destination="simple-feed" channelSet="{cs}"   
					 message="messageHandler(event.message)"/>  
		

 as文件:

 

	consumer.subscribe(); 

 

private function messageHandler(message:IMessage):void  
{  
	var siteInfo:ArrayCollection = message.body as ArrayCollection;
	var sites:ArrayCollection = siteInfo.getItemAt(0) as ArrayCollection;
	/**清空图层数据*/
	var keySets :Array = GlobeConfig.getInstance().graphicsLayerHashTable.getKeySet();
	for(var k:int =0 ; k < keySets.length ; k++){
		var templayer:GraphicsLayer = GlobeConfig.getInstance().graphicsLayerHashTable..find(keySets[k]);
		templayer.clear();
	}
	GlobeConfig.getInstance().graphicHashTable.clear();
	for(var a :int = 0 ; a<sites.length ; a++){
		var gisLocation:GisLocation = sites.getItemAt(a) as GisLocation;
		var g:Graphic = new Graphic();
		g.geometry = new MapPoint(Number(gisLocation.x),Number(gisLocation.y));
		g.symbol = new MonitorSymbol(gisLocation.alias,gisLocation.symbol,gisLocation.items);
		g.attributes = gisLocation;
		g.toolTip = gisLocation.alias;
		g.addEventListener(MouseEvent.CLICK,graphicClickHandler);
		var layerHashTable:HashTable = GlobeConfig.getInstance().graphicsLayerHashTable;
		var layer:GraphicsLayer = layerHashTable.find(gisLocation.layerid);
		if(gisLocation == null){
			continue;
		}
		if(layer != null){
			layer.add(g);
			GlobeConfig.getInstance().graphicHashTable.add(gisLocation.id,g);
		}
	}
	AppEventDispatcher.getInstance().dispatchEvent(new AppEvent(ArcgisEventConst.REFRESH_GIS_LOCATION_EVENT));
} 
 

java代码:

package com.team.gis.service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.flex.messaging.MessageTemplate;

import com.team.gis.domain.GisLocation;
import com.team.gis.domain.MonitorItem;
import com.team.gis.persistence.StationMapper;

public class SimpleFeed {

    private final MessageTemplate template;
    
    private StationMapper stationMapper;

    public SimpleFeed(MessageTemplate template) {
        this.template = template;
    }
    
    public void pushSiteInfo(){
    	List<GisLocation> locations = stationMapper.searchGisLocation();
		List<MonitorItem> items = stationMapper.searchMonitorItems();
		List<MonitorItem> aitems = null;
		for(GisLocation gisLocation : locations){
			if(gisLocation.getMonitor() != null){
				String[] ms = gisLocation.getMonitor().split(",");
				aitems = new ArrayList<MonitorItem>();
				for(MonitorItem m : items){
					for(String mi : ms){
						if(m.getId() == Integer.valueOf(mi)){
							m.setAvailable(true);
							aitems.add(m);
						}
					}
				}
				gisLocation.setItems(aitems);
			}
		}
		List<List<?>> siteInfo = new ArrayList<List<?>>(); 
		siteInfo.add(locations);
		siteInfo.add(items);
    	template.send("simple-feed",siteInfo);
    }

	public StationMapper getStationMapper() {
		return stationMapper;
	}

	public void setStationMapper(StationMapper stationMapper) {
		this.stationMapper = stationMapper;
	}
   
}
 

 

分享到:
评论
2 楼 chensong215 2013-05-29  
有什么办法解决?
1 楼 d8txc 2012-09-26  
楼主 请教个问题,按您说的这种方式有没有尝试过 启动tomcat 启动一个线程长时间推送后观察发现 内存溢出问题,在我的使用出现了这样的问题
msgBroker.routeMessageToService(msg, null); 关键就在这里 造成一直不回收 老年代最后耗完了整个堆 就溢出了,我是4秒溢出推送大概700多条数据
Thread.sleep(4000);

相关推荐

    Flex与Java的消息推送

    Flex与Java的消息推送技术主要涉及的是前端Flex应用与后端Java服务器之间的实时数据交互。在Web应用程序中,传统的HTTP协议是基于请求-响应模型的,客户端(浏览器)发起请求,服务器响应,然后连接关闭。然而,对于...

    Flex 消息推送实例,动态创建Destination实例

    源代码实现功能: 1. 实现了Flex与Java后台...2. 实现了Flex的消息推送技术,实现服务器端消息的发布以及多客户端消息的订阅。 3. 实现Java端动态创建Destination提供给Flex调用。 4. 适用于动态热部署项目需求的应用。

    Flex基于Producer和Consumer方式的简易消息推送机制

    Flex中的消息推送机制是基于Producer和Consumer模型实现的,这种机制允许应用程序实时地发送和接收消息,常用于构建聊天室、通知系统等实时交互的应用。下面将详细解释Flex消息推送的相关知识点。 1. **Producer与...

    flex数据推送.pdf

    flex数据推送. 与后台服务器的端 基于java as

    flex 推送 例子

    有关于flex推送技术的工程例子,使用blazeds的StreamingAMFChannel 通道实现推送功能。(使用前先启动http://localhost:8080/flex-blazeds/TickCacheServlet?cmd=start)

    Flex + blazeds + Java推送

    Flex + blazeds + Java推送Demo 本例实现由Flex一端客户端发送消息, 然后由Java端在发布到所有订阅的其它Flex端. 里面有说明与源码, 还有一个直接放到Tomcat里面的直接发布的项目 小编使用工具 eclipse3.5 flex sdk...

    基于FLEX,MINA消息推送核心代码

    本话题聚焦于基于FLEX和MINA的消息推送核心技术,这两种技术在构建高效、可靠的网络通信系统中发挥着重要作用。 FLEX是一种开源的富互联网应用程序(Rich Internet Application,RIA)开发框架,主要由Adobe公司...

    flex+spring+blazeds消息推送

    标题中的“flex+spring+blazeds消息推送”是指在开发富互联网应用程序(RIA)时,采用Adobe Flex作为前端UI框架,Spring作为后端服务层框架,BlazeDS作为数据通信中间件,实现服务器到客户端的消息实时推送功能。...

    数据推送flex

    - 可扩展性:设计可扩展的架构,以适应高并发和大数据量的推送需求,如使用消息队列(Message Queue)进行缓冲和分发。 综上所述,Flex数据推送技术通过Polling或Push策略实现了客户端与服务器之间的实时数据交换,...

    消息推送 blazeds

    1. **消息通道定义**:定义了服务器上用于推送消息的通道,这可能是通过Spring配置文件完成的。 2. **Flex客户端代码**:在Flex应用程序中,我们需要创建一个MessageBroker对象,然后订阅感兴趣的消息频道。这通常...

    BlazeDS实现java后台消息推送flex前台接收的例子

    在"BlazeDS实现java后台消息推送flex前台接收的例子"中,我们主要关注以下几个关键知识点: 1. **BlazeDS架构**:BlazeDS包含了一组服务,如Remoting服务、LiveCycle Data Services(LCDS)以及MessageBroker服务。...

    Flex + java 推送技术示例

    2. **Flex推送技术实现** - **Polling(轮询)**:简单轮询是最基础的推送实现,客户端定时向服务器发送请求检查是否有新数据。虽然简单,但效率低下,服务器压力大。 - **Long Polling(长轮询)**:在长轮询中,...

    Flex的数据推送问题解决方案

    在本文中,我们将深入探讨如何解决Flex数据推送问题,特别是在实时行情应用中,如股票、外汇和期货等。传统的做法是客户端定期向服务器发起请求获取最新数据,但这种方法效率较低且浪费资源。相反,我们可以利用...

    flex+blazeds+java后台消息推送(简单示例)[借鉴].pdf

    《Flex+BlazeDS+Java后台消息推送:一个简单示例》 在现代软件开发中,实时通信成为了提升用户体验的关键因素。特别是在Web应用程序中,后台消息推送技术允许服务器主动将信息推送到客户端,无需用户频繁刷新页面。...

    Flex + BlazeDS + Java + JMS 通信实例(附源码)

    BlazeDS是Adobe提供的一个免费服务器端组件,它允许Flex客户端与Java后端进行双向通信,实现了轻量级的远程方法调用(RPC)以及数据推送功能。Java是一种广泛使用的面向对象的编程语言,常用于构建服务器端应用。JMS...

    FLEX_Blazeds数据推送技术

    FLEX,BlazeDS,JAVA实现服务器端数据推送技术,下载后直接导到你的MYECLIPSE即可运行。先在IE内输入:http://localhost:8080/pushDemo/flex/pushDemo.html,点击“button”后,再另一个IE窗口内输入:...

    flex air中文官方帮助文档

    Flex Air是中国Adobe公司开发的一款基于Flash技术的富互联网应用程序(RIA)开发平台,它允许开发者创建可以在桌面运行的跨平台应用程序。本“Flex Air中文官方帮助文档”是开发者的重要参考资料,详细介绍了Flex ...

    基于Java_BlazeDS_Flex_服务器消息推的聊天室

    在本场景中,我们将探讨如何利用BlazeDS和Flex实现服务器消息推送。 首先,让我们了解BlazeDS的基本概念。BlazeDS是Adobe Flex与Java后端进行数据交互的一个中间件,它支持AMF(Action Message Format)协议,能够...

    Flex实现的xmpp消息发送接收

    接收消息则需要监听特定的事件,例如`onMessage`事件,当接收到服务器推送的消息时,处理这些事件并更新UI显示。 对于多平台支持,Flex使用Adobe AIR框架可以轻松地在iOS和Android设备上部署应用程序,因为AIR提供...

    Flex+java+bluzeds反向推送.docx

    在 Flex 应用中,客户端可以通过 `flex.messaging.MessageBroker` 发布消息,而服务器端则处理这些消息并推送给已订阅的客户端。消息订阅者可以通过 selector 属性来筛选接收的消息,实现定制化接收。 在 BlazeDS ...

Global site tag (gtag.js) - Google Analytics