flex客户端断开连接时,ActiveMQ不会停止订阅

flex客户端断开连接时,ActiveMQ不会停止订阅,activemq,blazeds,Activemq,Blazeds,我使用activeMQ 5.3通过blazeds 3.2向flex客户端发送消息 当客户端第一次连接时,我可以看到对activeMQ代理的订阅。但是,在我关闭运行客户端的浏览器后,即使不再使用任何消息,订阅仍然保持打开状态。这最终导致web服务器内存不足。从日志来看,Blazeds似乎正在取消订阅源 当没有客户端连接时,blazeds不应该停止订阅吗?他为什么不这样做 下面您可以从日志文件中找到一个代码段 ... STARTING WEB SERVER ... 14 Dec 2009 15:54

我使用activeMQ 5.3通过blazeds 3.2向flex客户端发送消息

当客户端第一次连接时,我可以看到对activeMQ代理的订阅。但是,在我关闭运行客户端的浏览器后,即使不再使用任何消息,订阅仍然保持打开状态。这最终导致web服务器内存不足。从日志来看,Blazeds似乎正在取消订阅源

当没有客户端连接时,blazeds不应该停止订阅吗?他为什么不这样做

下面您可以从日志文件中找到一个代码段

... STARTING WEB SERVER ... 14 Dec 2009 15:54:59,015 [main] DEBUG activemq.transport.vm.VMTransportFactory - binding to broker: localhost 14 Dec 2009 15:54:59,031 [main] INFO apache.activemq.broker.TransportConnector - Connector vm://localhost Started 14 Dec 2009 15:54:59,031 [main] INFO apache.activemq.broker.BrokerService - ActiveMQ JMS Message Broker (localhost, ID:pcjbe-2026-1260802498843-0:0) started ... CONNECTING WITH CLIENT ... 14 Dec 2009 15:55:03,953 [VMTransport] DEBUG apache.activemq.broker.TransportConnection - Setting up new connection: vm://localhost#4 14 Dec 2009 15:55:03,968 [VMTransport] DEBUG activemq.broker.region.AbstractRegion - localhost adding consumer: ID:pcjbe-2026-1260802498843-2:2:-1:1 for destination: topic://ActiveMQ.Advisory.TempQueue,topic://ActiveMQ.Advisory.TempTopic 14 Dec 2009 15:55:03,968 [http-8000-3] INFO flex.messaging.jms.JmsAdapter - client [AEE95CCE-816B-EBCC-2ACE-41508E3338AC] subscribed to destination [detectorsFeed] 14 Dec 2009 15:55:03,968 [VMTransport] DEBUG activemq.broker.region.AbstractRegion - localhost adding consumer: ID:pcjbe-2026-1260802498843-2:2:1:1 for destination: topic://tmsng.topic.detectors 14 Dec 2009 15:55:03,968 [VMTransport] DEBUG activemq.broker.region.AbstractRegion - localhost adding destination: topic://tmsng.topic.detectors 14 Dec 2009 15:55:03,968 [VMTransport] DEBUG activemq.broker.region.AbstractRegion - localhost adding destination: topic://tmsng.topic.detectors 14 Dec 2009 15:55:03,968 [VMTransport] DEBUG activemq.broker.region.AbstractRegion - localhost adding destination: topic://ActiveMQ.Advisory.Consumer.Topic.tmsng.topic.detectors [BlazeDS]12/14/2009 15:55:03.968 [DEBUG] [Client.MessageClient] MessageClient created with clientId 'AEE95CCE-816B-EBCC-2ACE-41508E3338AC' for destination 'detectorsFeed'. ... DISCONNECTING CLIENT ... 14 Dec 2009 15:58:55,156 [http-8000-8] INFO flex.messaging.jms.JmsAdapter - client [AEF0AC64-7B6C-2749-8860-252B8A302EBA] unsubscribed from destination [detectorsFeed] [BlazeDS]12/14/2009 15:58:55.156 [DEBUG] [Client.MessageClient] MessageClient with clientId 'AEF0AC64-7B6C-2749-8860-252B8A302EBA' for destination 'detectorsFeed' has been invalidated. ... 启动WEB服务器 ... 2009年12月14日15:54:59015[main]调试activemq.transport.vm.VMTransportFactory-绑定到代理:localhost 2009年12月14日15:54:59031[main]INFO apache.activemq.broker.TransportConnector-连接器vm://localhost已启动 2009年12月14日15:54:59031[main]信息apache.activemq.broker.BrokerService-activemq JMS消息代理(localhost,ID:pcjbe-2026-1260802498843-0:0)已启动 ... 与客户端连接 ... 2009年12月14日15:55:03953[VMTransport]调试apache.activemq.broker.TransportConnection-设置新连接:vm://localhost#4 2009年12月14日15:55:03968[VMTransport]调试activemq.broker.region.AbstractRegion-本地主机添加使用者:ID:pcjbe-2026-1260802498843-2:2:-1:1用于目标:topic://ActiveMQ.Advisory.TempQueue,topic://ActiveMQ.Advisory.TempTopic 2009年12月14日15:55:03968[http-8000-3]INFO flex.messaging.jms.JmsAdapter-客户端[AEE95CCE-816B-EBCC-2ACE-41508E3338AC]已订阅目标[detectorsFeed] 2009年12月14日15:55:03968[VMTransport]调试activemq.broker.region.AbstractRegion-本地主机添加使用者:ID:pcjbe-2026-1260802498843-2:2:1:1,用于目标:topic://tmsng.topic.detectors 14 Dec 2009 15:55:03968[VMTransport]调试activemq.broker.region.AbstractRegion-本地主机添加目标:topic://tmsng.topic.detectors 14 Dec 2009 15:55:03968[VMTransport]调试activemq.broker.region.AbstractRegion-本地主机添加目标:topic://tmsng.topic.detectors 14 Dec 2009 15:55:03968[VMTransport]调试activemq.broker.region.AbstractRegion-本地主机添加目标:topic://ActiveMQ.Advisory.Consumer.Topic.tmsng.topic.detectors [BlazeDS]12/14/2009 15:55:03.968[DEBUG][Client.MessageClient]MessageClient为目标“detectorsFeed”使用clientId“AEE95CCE-816B-EBCC-2ACE-41508E3338AC”创建。 ... 断开客户端连接 ... 2009年12月14日15:58:55156[http-8000-8]INFO flex.messaging.jms.JmsAdapter-客户端[AEF0AC64-7B6C-2749-8860-252B8A302EBA]已从目标取消订阅[detectorsFeed] [BlazeDS]12/14/2009 15:58:55.156[DEBUG][Client.MessageClient]目标“detectorsFeed”的客户端ID为“AEF0AC64-7B6C-2749-8860-252B8A302EBA”的MessageClient已无效。 您可以在下面找到用于ActiveMQ的配置

<beans xmlns="http://www.springframework.org/schema/beans" ...>

<amq:broker brokerName="localhost" useJmx="true" persistent="false" dataDirectory="${INSTALLDIR}/var" >
    <amq:destinationPolicy>
        <amq:policyMap>
            <amq:policyEntries>
                <amq:policyEntry topic=">" producerFlowControl="false">
                    <amq:pendingSubscriberPolicy>
                        <amq:vmCursor/>
                    </amq:pendingSubscriberPolicy>
                </amq:policyEntry>
            </amq:policyEntries>
        </amq:policyMap>
    </amq:destinationPolicy>

    <amq:managementContext>
        <amq:managementContext createConnector="false"/>
    </amq:managementContext>

    <amq:systemUsage>
        <amq:systemUsage sendFailIfNoSpace="true">
            <amq:memoryUsage>
                <amq:memoryUsage limit="10mb" />
            </amq:memoryUsage>
        </amq:systemUsage>
    </amq:systemUsage>

    <amq:transportConnectors>
        <amq:transportConnector uri="vm://localhost" />
    </amq:transportConnectors>
</amq:broker>

<!-- JMS ConnectionFactory to use, configuring the embedded broker using XML -->
<amq:connectionFactory id="connectionFactory" brokerURL="vm://localhost" alwaysSessionAsync="true">
    <amq:prefetchPolicy>
        <!-- For pooled connections, set the prefetch to 1 to avoid out-of-order messages. (see http://activemq.apache.org/what-is-the-prefetch-limit-for.html) -->
        <amq:prefetchPolicy all="1"/>   
    </amq:prefetchPolicy>
</amq:connectionFactory>

<!-- a pooling based JMS provider -->
<bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
    <property name="connectionFactory" ref="connectionFactory" />
</bean>

<amq:topic id="detectorTopic" physicalName="tmsng.topic.detectors" />

致意
Jan

看起来确实像是blazeds没有关闭连接的问题