`
oywl2008
  • 浏览: 1051114 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Flex消息服务

 
阅读更多

1, 初识消息服务: 
相关概念: 
      消息(message):包括头信息(head)和主题(body),头信息又包括消息标识和路径信息,消息主题包括应用数据生产者(producer)和消费者(consumer):发信息的应用成为生产者,接收信息的应该称为消费者,生产者将消息发送到特定的消息接收点,消息服务会将这条信息转发到适合的消费者 
消息接收点(message destination):负责将数据转换为消息,以及将消息转换为消费者可以使用的数据格式的代码 
消息通道(message channel):用来将生产者和消费者连接到消息接收点 
消息适配器(message adapter):消息适配器是flex消息服务和其他系统的转换器,比如JMS适配器使得基于java的JMS消息应用可以像flex应用一样共享相同的接收点,java应用可以向flex应用分布消息,同时也可以相应flex应用发送的消息 

消息流程: 
flex消息服务支持两种类型的消息:发布/订阅消息和点到点消息 

2, 使用flex消息服务 


Producer的创建: 
1,使用MXML方式: 

 

Mxml代码 复制代码 收藏代码
  1. <mx:Producer id=”user1” destination=”msCenter” acknowledge=”handleAck(event)” fault=”handleFault(event)”/>   
<mx:Producer id=”user1” destination=”msCenter” acknowledge=”handleAck(event)” fault=”handleFault(event)”/> 

 

 

 

MessageEvent-----消息处理,MessageAckEvent------确认事件处理,MessageFaultEvent--------错误事件处理 
2,  使用as方式 

As3代码 复制代码 收藏代码
  1. private var user1:Producer;    
  2.    user1 = new Prodicer();    
  3.    user1.destination = “msCenter”;    
  4.    user1.addEventListener(MessageAckEvent.ACKNOWLEDGE,handleAck);    
  5.    user1.addEventListener(MessageFaultEvent.FAULT,handleFault);   
 private var user1:Producer; 
    user1 = new Prodicer(); 
    user1.destination = “msCenter”; 
    user1.addEventListener(MessageAckEvent.ACKNOWLEDGE,handleAck); 
    user1.addEventListener(MessageFaultEvent.FAULT,handleFault); 

 
创建好之后,就是发送,发送有三个步骤: 
1, 创建用于消息发送的mx.messaging.messages.AsyncMessage对象 
2, 定义对象的主体内容,即要发送的信息 
3, 调用组件的send()方法发送信息 

As3代码 复制代码 收藏代码
  1. 如:var content:AsyncMessage=new AsyncMessage();    
  2. content.body=”韩定”;    
  3. user1.send();    
  4. 可以向消息中添加额外信息    
  5. 如:var content:AsyncMessage=new AsyncMessage();    
  6. content.headers = new Array();    
  7. content.headers[“user”]=”张三”;   
如: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属性 

 

http://zhanshenlvbu.iteye.com/blog/1540502

 

http://keren.iteye.com/blog/560896

 

 
分享到:
评论

相关推荐

    Flex Message Service 消息服务

    在Flex消息服务中,发送消息的应用被称为生产者(producer),而接收消息的应用被称为消费者(consumer)。 消息接收点(message destination)是负责数据转换为消息,以及将消息转换为消费者可以使用的数据格式的...

    Flex实现的xmpp消息发送接收

    它基于XML,提供了一个灵活的消息架构,使得开发者可以轻松地构建分布式系统和网络服务。 XIFF(eXtensible Internet Framework)是Flex中一个用于处理XMPP协议的库,它允许开发者在Flex应用程序中实现XMPP功能,...

    Flex与Java的消息推送

    在实际应用中,开发人员需要在Java服务器端创建处理推送逻辑的服务,并在Flex客户端使用AMFChannel与服务器建立连接,订阅感兴趣的数据通道。当服务器端有新数据时,会通过已建立的连接将数据推送到客户端,客户端...

    Blazeds 的flex端主动订阅消息

    在Flex端订阅消息的核心在于使用 BlazeDS 的 MessageBroker 服务,它提供了AMF(Action Message Format)通道,使得Flex客户端可以与服务器端的业务逻辑进行高效的数据交换。下面我们将深入探讨如何实现这个功能。 ...

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

    通过Flex的`Flash Remoting`和`Messaging`模块,连接到BlazeDS服务,订阅消息目的地,并设置监听器接收服务器推送的消息。 5. **连接与通信**:Flex客户端通过HTTP或RTMP通道连接到BlazeDS服务器。用户登录后,可以...

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

    下面将详细解释Flex消息推送的相关知识点。 1. **Producer与Consumer模型**: 在Flex中,Producer负责生成并发送消息,而Consumer则负责接收和处理这些消息。在这个例子中,`mx:Producer`对象(id="pd")作为生产...

    flex-messaging系列jar包

    Flex Messaging系列JAR包是Adobe Flex与Java之间进行通信的核心组件,主要负责建立富互联网应用程序(RIA)与服务器之间的消息传递。这些JAR文件包含了多种服务和协议的支持,使得Flex客户端能够与Java后端无缝交互...

    Flex与服务器端通信

    - ** BlazeDS服务**:Adobe的BlazeDS是Flex与服务器端通信的主要桥梁,它提供了一套轻量级的消息传输协议,包括AMF(Action Message Format)和Remoting,使得客户端与服务器之间的数据交换更为高效。 - **AMF**:...

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

    MINA以其非阻塞I/O模型而闻名,这种模型非常适合处理大量的并发连接,尤其适合消息推送服务,其中服务器可能需要同时维持成千上万个活跃的客户端连接。 在基于FLEX和MINA的消息推送系统中,核心代码通常涉及以下几...

    flex-messaging-core.jar

    1. **MessageBroker**: 这是Flex消息传递系统的中心,它管理消息的路由,调度和处理。MessageBroker实例化并配置了各种服务,如HTTP、HTTPS、RTMP和WebSocket等通道,以便通过这些通道发送和接收消息。 2. **...

    FlexDemo.rar

    这个压缩包主要是为了演示如何在Flex前端应用中实现与后端服务的数据交互,特别是利用BlazeDS进行实时数据推送以及消息订阅的功能。以下是关于这些技术及其整合的详细解释: 1. **Flex**:Flex是一种用于构建富...

    Java_Flex,Java_Flex,Java_Flex

    2. LiveCycle Data Services (LCDS):虽然LCDS是商业产品,但它提供了比BlazeDS更高级的功能,如数据缓存、高级消息服务和离线支持。对于需要复杂数据管理和高级服务的企业应用来说,LCDS是一个不错的选择。 3. ...

    AMF抓取flex页面数据

    在IT行业中,Flex是一种用于构建富互联网应用程序(RIA)的技术,它基于ActionScript和Flash Player。AMF(Action Message Format)是Adobe开发的一种二进制数据交换格式,主要用于提高Flex和服务器之间的通信效率。...

    Flex整合ActiveMQ(JMS)

    在这个过程中,Flex作为一个富互联网应用程序(RIA)平台,通过Java消息服务(JMS)接口与ActiveMQ通信,实现了数据的异步传输和解耦。 ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它支持多种协议,包括...

    flex用到JMS代码下载

    在本例中,你需要下载并安装ActiveMQ,然后启动它的服务作为消息代理,使得Flex客户端可以通过它与服务器进行JMS通信。 3. **Tomcat部署**: Tomcat是一个流行的Java Servlet容器,用于部署和运行Java Web应用程序...

    flex 多个聊天实例

    6. **组件使用**:在Flex中,有许多预定义的UI组件,如TextInput用于输入文字,Button用于发送消息,以及可能的List或DataGrid显示聊天记录。理解如何自定义和使用这些组件是必要的。 7. **事件处理**:在Flex中,...

    spring3+ActiveMQ+blazeds+flex consumer

    ActiveMQ是Apache出品的一款开源的消息中间件,它实现了Java消息服务(JMS),能够处理异步通信和消息传递。在本项目中,ActiveMQ作为消息代理,负责接收、存储和分发消息,确保消息的可靠传输,即使在分布式环境中...

    flex的xiff访问openfire服务器的demo

    Flex是Adobe公司开发的一种开源框架,主要用于构建富互联网应用程序(RIA)。它基于ActionScript语言,提供了丰富的用户界面组件和强大的数据绑定功能。XIFF(eXtensible Internet Federation Framework)是一个用于...

    spring-flex-1.5.2

    `flex-servlet.xml` 配置了 Flex 服务端的Servlet,而 `flex-config.xml` 用于定义消息代理和服务端点。 6. **部署与运行**:Spring Flex 可以在任何支持 Servlet 2.4 或更高版本的容器中运行,如 Tomcat、Jetty 等...

    spring-flex-1.5.0.M2-dist.zip

    在Spring Flex 1.5.0.M2中,核心组件`spring-flex-1.5.0.M2.jar`扮演了关键角色,它是Spring和Flex集成的核心库,提供了诸如消息代理、配置支持和Spring服务代理等功能。这个库使得Flex客户端可以轻松地调用Spring...

Global site tag (gtag.js) - Google Analytics