首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

flex讯息服务

2012-07-01 
flex消息服务1, 初识消息服务:mx:Producer id”user1” destination”msCenter” acknowledge”handleAck(e

flex消息服务

1, 初识消息服务:<mx:Producer id=”user1” destination=”msCenter” acknowledge=”handleAck(event)” fault=”handleFault(event)”/>

?

?

?

MessageEvent-----消息处理,MessageAckEvent------确认事件处理,MessageFaultEvent--------错误事件处理 private var user1:Producer; user1 = new Prodicer(); user1.destination = “msCenter”; user1.addEventListener(MessageAckEvent.ACKNOWLEDGE,handleAck); user1.addEventListener(MessageFaultEvent.FAULT,handleFault);

?
创建好之后,就是发送,发送有三个步骤:如:var content:AsyncMessage=new AsyncMessage(); content.body=”韩定”; user1.send(); 可以向消息中添加额外信息 如:var content:AsyncMessage=new AsyncMessage(); content.headers = new Array(); content.headers[“user”]=”张三”;

?

消息发送错误处理:?
????? 对于producer组件,有两个事件可以触发发送错误?
????? 1.requestTimeout:用户可以设定从消息发出到收到确认消息的时间,超出,则表明消息发送可能发生错误?
????? 2.传输故障:在确认收到消息之前底层的消息通道发生故障,断开连接?
????? 在处理错误时,不同的错误,处理的方式不同,所以在处理错误时,首先要获取当前的错误消息,是通过ErrorMessgae.MESSAGE_DELIVERY_IN_DOUBT的ErrorMessage下的faultCode属性,该属性记录了当前发送的错误信息,用户可以根据错误,来决定忽略错误或者重新发送消息。

Consumer的创建:?
????? 它的创建和producer差不多,但不同的是,consumer必须要向接收点订阅,这样才能接受来自接收点的消息,通过subscribe()方法可以实现消息过滤:通过消息的头部信息,对接收的消息进行选择,过滤掉不符合条件的消息,消息过滤使用的是consumer组件的selector属性,又称为消息选择器,如:selector=”age>18”;使用Subtopic:是用来对Priducer组件向接收点发送信息进行分类,在consumer组件中可以设置Subtopic,使得它能从订阅的接收点特定subtopic或者Subtopic集合的消息。使用通配符*可以发送或接收多个Subtopic消息?



3.配置消息服务?

?

?

?

????? 消息服务配置主要完成的任务是定义消息接收点,对消息接收点使用安全策略,修改日志设置,,消息服务的配置是在flex服务文件中(默认是services-config.xml)的消息服务部分进行,,,,,,,,,以下是相关概念:?

?

?

1.消息服务接收点?
????? 它是producer和cosumer组件连接服务端处理程序。。?
2.消息通道?
????? 它是消息传输的路径,,,,,通常使用最普遍的两个通道时RTMP通道和AMF通道,第一个是客户和服务器之间保证着一条连接,因此不需要轮询服务器,,,而AMF通道当有新的消息到来时需要轮询服务器?
3.消息服务适配器??
????? 它是用在与其他系统交互时,提供消息传递功能的服务器处理程序,在接收点的定义中有对适配器的引用,用户也可以指定特定的适配器?
4.安全?
????? 指的是接收点的安全,安全保证是通过secutity constraint实现的,它定义了接收点的访问权利,,,secutity constraint在用户访问接收点之前,对用户进行授权和验证?



a,?.设置网络属性:

????? 用来定义client-server之间消息通信的行为---在<destination>下的<properties>下的<network>标签?。session-timeout:设定一个订阅者从订阅到退订之前空闲的时间,以分钟计,如果该值等于0,则订阅者不会自动转为退订;throttle-inbound:max-frequency属性控制每秒服务器最大接收消息的条数,policy属性指示了消息限制达到后的处理,如果为error表示将返回一个错误,IGNORE则不返回错误直接忽略;throttle-outbound:max-frequency属性控制每秒服务器最大接收消息的条数,,policy属性指示了消息限制达到后的处理,如果为error表示将返回一个错误,IGNORE则不返回错误直接忽略,REPLACE表示当达到最大数时以前的消息将会被替换。
b.设置服务器属性:

????? 指的是接收点中包含的一系列属性用于控制服务器相关的参数,在? <destination>下的<properties>下的<server>标签?。max-cache-size:存储缓存中保存消息的最大条数?;message-time-to-live:消息在服务器上保存的时间,为0表示将永久保存?;durable:这个是个布尔值,表示消息是否转为持久存储,以防止连接中断,保证消息到达接收点订阅者。当使用JMS适配器时,它会继承该值durable-store-manager:当flex客户端不使用JMS适配器时会用到这个类,默认情况下包含在Flex Data Services中的flex.messaging.durabilitu.FileStoreManager类,会将消息存储在flex应用中的WEB-INF/flex/message_store/DESTINATION_NAME文件中,,用户也可以通过设置file-store-root属性值来改变存储位置?
????? batch-write-size:每一批写入的持久消息的数量?
????? file-store-root:持久消息文件的存放位置?
????? max-file-size:最大的持久消息的大小,单位kb?
c.引用消息通道:

????? 消息通过消息通道来回进行传输………在<destination>下的<channels>下的<channel>中的ref属性,,可以定义多个消息通道的引用。
d.引用消息适配器:

????? 在flex数据应用中使用Flex Data Service中包含的ActionScript,JMS或者ColdFusion Event Gateway适配器,在<destination>下的<adapter>的ref属性?

热点排行