flex producer java_Flex – Producer Consumer 讲解

在Flex中,传输模式有两种(请求/响应)以及(发布/订阅)。

Producer(生产者)/Consumer(消费者),Producer和Consumer使用Messaging的方式通信,显而易见是运用发布/订阅机制。Producer用来发布消息,Consumer用来订阅消。例如:客户端向服务器订阅消息,当服务器消息发生变化后,订阅了该消息的客户端会获得更新后的消息并且即时更新。因此可以这一特点做出很多具有实时交互需求的应用程序,如聊天室、IM、会议室、在线股票等等…

消息发布组件–Producer

常用属性:

id–Producer实例名。

destination–消息服务的目标。该值应与messaging-config.xml文件中的目标条目匹配。

channelSet–提供对配置给Producer的消息通道类的访问。

autoConnect–如果为 true,则Producer将在第一次调用 send() 方法时自动连接到其目标。如果为 false,必须显式调用 connect() 方法才能建立与目标的连接。默认情况下,此属性为 true,但需要在脱机模式下操作的应用程序可能将此属性设置为 false,以防止 send() 方法隐式连接。

connected–只读属性。指示Producer当前是否已通过其ChannelSet连接到了其目标。

reconnectAttempts–在失去与目标的连接、或者连接到的目标关闭的情况下进行的重新连接尝试次数。

reconnectInterval–重新尝试连接之间间隔的毫秒数。

requestTimeout–设定对已发送消息的请求超时(单位:秒)时间。如果在达到超时之前未从远程目标收到确认、响应或错误,则消息将在客户端报错。

subtopic–使用的远程目标的子主题(subtopic)的访问。

常用方法:

connect():void--将Producer 连接到其目的目标。建立连接时,connected 属性将更改为 true。

disconnect():void--断开Producer与其远程目标之间的连接。此方法不会等待未完成的网络操作完成。调用 disconnect() 方法后,Producer报告其未连接,并且不会收到任何未完成的消息确认或错误。如果正在尝试重新连接,断开连接会停止自动重新连接的尝试。

send(message:IMessage):void--向其目标发送指定的消息。如果使用Producer发布/订阅消息传递,则除非使用自定义消息类型,并且服务器上的消息目标已配置为处理自定义消息类型,否则只可以发送 AsyncMessage 类型的消息。

常用事件:

fault–发生消息错误时调度fault事件。

acknowledge–收到已发送消息的确认结果时由MessageResponder调度。

channelConnect–与通道建立连接时调度。

channelDisconnect–与通道断开连接时调度。

channelFault–使用的通道出现错误时调度。

Producer与disconnect所指的目标建立连接后connected属性将会被设置为true,Producer每次调用public function send(message:IMessage):void方法发送消息前都会自动的去检测connected属性。Producer使用send()方法发送一条消息后,发送成功会自动调度acknowledge事件,发送失败则会自动调度fault事件,我们可以在事件侦听方法中做相应处理。如果client端与severs端因某种原因失去了连接,Producer则会根据reconnectAttempts和reconnectInterval的设置自动尝试连接服务器。若reconnectAttempts设置为-1,Producer则会无限制的尝试重新连接服务器;若reconnectAttempts设置为0则不尝试任何重新连接服务器的操作。

消息订阅和接收组件–Consumer

常用属性:

id–Consumer实例名。

destination–消息服务的目标。该值应与messaging-config.xml文件中的目标条目匹配。

channelSet–提供对配置给Consumer的消息通道类的访问。

connected–只读属性。指示Consumer当前是否已通过其ChannelSet连接到了其目标。

subscribed–只读属性。指示Consumer当前是否处于订阅状态。

reconnectAttempts–在失去与目标的连接、或者连接到的目标关闭的情况下进行的重新连接尝试次数。

reconnectInterval–重新尝试连接之间间隔的毫秒数。

requestTimeout–设定对已发送消息的请求超时(单位:秒)时间。如果在达到超时之前未从远程目标收到确认、响应或错误,则消息将在客户端报错。

subtopic–使用的远程目标的子主题(subtopic)的访问。

selector–字符串类型。Consumer的选择器。

常用方法:

subscribe(clientId:String = null):void –订阅远程目标。

unsubscribe(preserveDurable:Boolean = false):void–从远程目标取消订阅。对于持久JMS subscriptions,这将破坏 JMS 服务器上的持久订阅。

receive()–请求在服务器上为此Consumer排队的所有消息。应仅对通过非实时、非轮询通道订阅的Consumer使用此方法。如果未订阅 Consumer,此方法为无操作。

disconnect()–断开Consumer与其远程目标之间的连接。应在取消订阅后应用程序不再需要的Consumer上调用此方法。此方法不会等待未完成的网络操作完成,也不会向服务器发送取消订阅消息。调用disconnect()后,Consumer将报告它处于断开连接的取消订阅状态,因为它在重新建立连接和重新订阅之前不会接收任何其它消息。如果正在尝试重新订阅,断开连接会停止自动重新订阅的尝试。

常用事件:

message–Consumer接收到消息时调度。

fault–发生消息错误时调度fault事件。

channelConnect–与通道建立连接时调度。

channelDisconnect–与通道断开连接时调度。

channelFault–使用的通道出现错误时调度。

Consumer与disconnect所指的目标建立连接后connected属性将会被设置为true,使用其subscribe()方法成功订阅消息后subscribed属性也会被设置为true。当消息被发送到客户端,Consumer会自动调度message事件,我们可以在message事件侦听方法中做相应处理。如果client端与severs端因某种原因失去了连接,Producer则会根据reconnectAttempts和reconnectInterval的设置自动尝试连接服务器。若reconnectAttempts设置为-1,Producer则会无限制的尝试重新连接服务器;若reconnectAttempts设置为0则不尝试任何重新连接服务器的操作。Consumer使用其unsubscribe()方法注销订阅。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值