Flex BlazeDS消费者未订阅

时间:2012-07-12 13:37:51

标签: flex blazeds consumer

我的flex前端正在使用BlazeDS / Tomcat来收集实时数据 我使用普通消费者而不是标准的流式传输频道。

<mx:ChannelSet id="channelSet">
 <mx:StreamingAMFChannel id="streamingAMF" url="messagebroker/streamingamf/" />
</mx:ChannelSet>
<mx:Consumer id="consumer" channelSet="{channelSet}" 
             channelConnect="consumer_channelConnectHandler(event)" 
             channelDisconnect="consumer_channelDisconnectHandler(event)" 
             message="consumer_messageHandler(event.message)"  
             fault="consumer_faultHandler(event)"
             resubscribeAttempts="-1" 
             resubscribeInterval="2000"/>

此设置适用于所有设置,但以下内容。可见的差异是:

  • Windows 2008服务器与Linux或更早版本的Windows
  • Java 1.7.0 vs 1.6.0
  • Tomcat 7.0 vs 6.0

症状是 consumer.subscribed 永远不会设置为 true ,尽管 consumer.subscribe()被调用,并在服务器上看到侧:

[BlazeDS]13:49:03.922 [DEBUG] [Endpoint.FlexSession] FlexSession created with id '275E7BE0E76EC4C4E8DB08F770BE2846' for an Http-based client connection.
[BlazeDS]13:49:03.922 [INFO] [Endpoint.General] Channel endpoint skydata-streaming-amf received request.

我检查了所有日志(catalina,stdout和stderr),没有任何明显的线索。再次,这个完全相同的设置适用于所有其他情况

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

问题来自 Tomcat 7.0 恢复到Tomcat 6.0立即修复它。

有一个hack可用here来修复BlazeDS和Tomcat 7。

答案 1 :(得分:0)

检查消费者的连接属性。如果可能的话,还要发布频道集配置。

我一直在使用Tomcat7并没有发现问题,而是我使用它,因为它基于Servlet 3.0规范,可能支持多个客户端。我找到了here