BlazedDS 笔记
BlazedDS 的RPC服务 RPC是什么我就不在这不懂装懂了的乱讲了.有兴趣可以网上搜下. 这个的主要目的是实现执行远程代码. WEB-INF/flex/remoting-config.xml 配置 destination (注.如果集成 spring,就无视吧...会有另外的文件配置成 bean) <destination id="echoServiceDestination" channels="my-amf"> <properties> <source>remoting.EchoService</source> </properties> </destination> WEB-INF/flex/services-config.xml 配置频道 <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"> <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/> <properties> <polling-enabled>false</polling-enabled> </properties> </channel-definition> flex客户端调用 <mx:RemoteObject id="remoteObject" destination="echoServiceDestination" result="resultHandler(event);" fault="faultHandler(event);"/> BlazedDS 的消息服务 http://www.riafan.com/article/backend/blazeds-message-service.html 这里有篇文章推荐看看. 也推荐看这里的(英文) http://livedocs.adobe.com/blazeds/1/blazeds_devguide/Part_Flex_Messaging_1.html adobe官方对消息服务的介绍.
消息订阅? 客户端连接到相同的 destination flex 创建消息应用,连接到服务器端的某个 destination .当向该 destination 发送消息时,连接到相同 destination 的其他 flex 客户端就会收到服务器转发的消息. 服务器端也可以直接推送消息给已经连接到相同 destination 的所有客户机. 通常,客户机之间互相是不知道对方的. 消息过滤机制能实现针对某些客户机发消息,不在消息过滤范围内的其它客户机就可以不接收这些消息. http://livedocs.adobe.com/blazeds/1/blazeds_devguide/messaging_6.html#154656 Note: You can support point-to-point messaging,also known as queue-based messaging,between Flex clients by using the JMSAdapter and bridging to a JMS queue. For more information,seeConnecting to the Java Message Service (JMS). 简单记录下需要配置的地方. Channels 频道 在 WEB-INF/flex/services-config.xml 配置 服务器端会定义的一组频道配置列表.这组列表每个项都有个 endpoint 属性,指示当特定的URL访问到时,该请求会转向哪个代理类(Message Broker). 代理类再将请求转发给MessageService.每个频道还有一些配置来设置消息的模式. <channel-definition id="my-amf-poll" class="mx.messaging.channels.AMFChannel"> <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amfpoll" class="flex.messaging.endpoints.AMFEndpoint"/> <properties> <polling-enabled>true</polling-enabled> <polling-interval-seconds>1</polling-interval-seconds> </properties> </channel-definition> Destinations? 在 WEB-INF/flex/messaging-config.xml 配置 spring 不是用这个.另外使用 <flex:message-destination .../> 定义 <destination id="MessagingDestination" channels="my-amf-poll"/> flex客户端调用的组件(4以上用 spark 的...) <mx:Producer id="producer" destination="chat" acknowledge="acknowledgeHandler(event);" fault="faultHandler(event);"/> <mx:Consumer id="consumer" destination="MessagingDestination" fault="faultHandler(event);" message="messageHandler(event);"/> //订阅 private function logon():void { ?? ?consumer.subscribe(); } //发送 private function sendMessage():void { ?? ?var message:AsyncMessage = new AsyncMessage(); ?? ?message.body = new Object(); ?? ?message.body.uName = userName.text; ?? ?message.body.uInput = input.text; ?? ?message.body.theCollection = ['b','a',3,new Date()]; ?? ?producer.send(message); } //接收 private function messageHandler(event:MessageEvent):void { ?? ?// Handle message event. ?? ?trace(String(event.message.body.uName) + "," + String(event.message.body.uInput)); } //发送消息后处理服务器返回正确 private function acknowledgeHandler(event:MessageAckEvent):void { ?? ?// Handle acknowledge message event. }????????? ? //发送消息后处理消息发送失败 ????????? ? private function faultHandler(event:MessageFaultEvent):void { ?? ?// Handle message fault event. } 和RPC不同的是消息服务的 destination 类服务器默认提供了2种.所以不需要再去写了.不过还是提供一个基类.允许扩展自己的消息?Adapters.
消息传递的重发和超时.当?Producer 组件发送消息后,有两种情况会触发?MessageFaultEvent.FAULT 事件, 1超过时间了服务器还没返回一个?MessageAckEvent.ACKNOWLEDGE 信息. 2当频道已经变成断开连接的情况,MessageAckEvent.ACKNOWLEDGE还是没收到. 这个时候可以尝试在??MessageFaultEvent.FAULT事件句柄里重新发送消息.不过还是要注意重发消息会不会导致出现脏数据的问题. 这里是消息过滤 http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=Part_Flex_Messaging_1.html 这里是配置消息服务 services-config.xml 包括?adapter,destination http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=Part_Flex_Messaging_1.html 另注:假设集成了 spring,配置文件还是直接参考 spring-flex-1.5.0.RELEASE 里的文档. PDF 第二章和第七章有专门讲如何用bean来配置. 默认情况下,spring-flex 插件已经配置了default- adapters.和指定了 default-channels,当需要再另建 adapters 时: <flex:message-broker> spring 定义消息服务的destination : <flex:message-destination id="MessagingDestination" channels="my-polling-amf"/> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |