LCDS:Messaging Service 学习(一)

本文介绍了MessagingService的架构,包括可用的实时通道如RTMPChannel、AMFChannel等,并详细阐述了如何通过LCDS提供的ActionScriptAdapter、JMSAdapter及自定义适配器进行消息发布与订阅。文中还解释了如何确保消息的成功发送与接收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Messaging Service流程图


Messaging Service架构图


Channels

可以使用的实时channal(Real-time channels )有启用pollingRTMPChannel , AMFChannel HTTPChannel ,还有StreamingAMFChannel StreamingHTTPChannel 。其中RTMPChannel 是绝对实时的,一直保持着 客户端和服务器端的socket连接

<channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel">
        <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
        <properties>
            <polling-enabled>true</polling-enabled>
            <polling-interval-seconds>8</polling-interval-seconds>
        </properties>
</channel-definition>
 

Adapters

LCDS为Messaging Service提供了三种adapter:

  • ActionScriptAdapter :当需要在各个客户端之间发送/接收AS3对象 的时候使用
  • JMSAdapter :它搭建了从destination到JMS destination的通道,使得Flex客户端可以直接同JMS服务器通信
  • A custom adapter :使你可以创建一个adapter来同其他的messaging implementations或者你自定义的实现来进行交互

Working with Producer components  

  • 确定发布消息是否成功,acknowledge fault
  • Producer.requestTimeout 可以设置请求的超时时间
  • 当请求发送成功后 Producer.connected 的值会被设为true
var message:AsyncMessage = new AsyncMessage();
message.body = new Object();
message.body.uName = userName.text;
message.body.uInput = input.text;
producer.send(message);

 

Working with Consumer components

  • 使用 message fault 来确认消息是否订阅成功
  • resubscribeAttempts :Consumer 在目标不可用或连接到目标失败的情况下进行的重新订阅尝试次数
  • resubscribeInterval :重新订阅尝试之间间隔的毫秒数
  • 当订阅成功后 Consumer.subscribed 的值会被设为true
  • 如果使用non-real-time channel,例如一个polling-enabled 值为falseAMFChannel ,可以 调用subscribe() 订阅这则消息,然后 调用receive() 来接收消息
  • 接收消息:如果Consumer使用的是实时轮询流通道 ,那么无需 向服务器发出初始化请求 ,消息会自动地发送到Consumer;然而,如果我们使用非实时通道 ,例如没有启用轮询的AMF通道 (polling-enable=false的AMFChannel) ,那么必须调用Consumer.receive() 方法来直接向服务器端发出请求以接收消息队列中的数据
consumer.subscribe();

private function messageHandler(event:MessageEvent):void {
	// Handle message event.
	ta.text = String(event.message.body.uName) + " ," +
	String(event.message.body.uInput);
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值