[ https://issues.apache.org/jira/browse/AMQ-2683?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12974660#action_12974660 ]
Maarten Dirkse commented on AMQ-2683: ------------------------------------- The testcase does not work as expected (ie PFC doesn't work for topics) for both 5.4.2 and 5.5-snapshot. > Producer Flow Control Does Not Seem to Work with Topics > ------------------------------------------------------- > > Key: AMQ-2683 > URL: https://issues.apache.org/jira/browse/AMQ-2683 > Project: ActiveMQ > Issue Type: Bug > Components: Broker > Affects Versions: 5.3.0, 5.3.1 > Environment: Windows 2008 Server, Sun Java 6. > Reporter: Brad Willard > Priority: Minor > Fix For: 5.5.0 > > > I have multiple producers posting messages to queues and adding statistical > information to a topic. I have one consumer of that topic subscribing and > taking those messages and monitors for problems. The consumer is slower than > publishing to the topic. I have flow control enabled and I expected that > once the memory limit of the Consumers dispatch queue was reached it would > throttle the publishers to the topic, but instead it seems to lock everything > up. > The message producers are putting messages to each queue and the topic on > separate sessions. The broker basically stops once it posts the message that > it's going to throttle producers. The topic messages are messages with text > attributes, they are non persistent and posted non-transactional using the > AUTO_ACKNOWLEDGE mode. > All the producers and consumers use the same Connection factory with with > these attributes set. > ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(brokerURI); > factory.setProducerWindowSize(1024 * 1024); > factory.getPrefetchPolicy().setTopicPrefetch(10); > My activemq config is as follows: > <broker xmlns="http://activemq.apache.org/schema/core" > brokerName="localhost" dataDirectory="${activemq.base}/data" > destroyApplicationContextOnStop="true"> > > <!-- > For better performances use VM cursor and small memory > limit. > For more information, see: > > http://activemq.apache.org/message-cursors.html > > Also, if your producer is "hanging", it's probably due to > producer flow control. > For more information, see: > http://activemq.apache.org/producer-flow-control.html > --> > > <destinationPolicy> > <policyMap> > <policyEntries> > <policyEntry topic=">" producerFlowControl="true" > memoryLimit="15mb"> > <pendingSubscriberPolicy> > <vmCursor /> > </pendingSubscriberPolicy> > </policyEntry> > <policyEntry queue=">" producerFlowControl="true" > memoryLimit="15mb"> > <!-- Use VM cursor for better latency > For more information, see: > > http://activemq.apache.org/message-cursors.html > > <pendingQueuePolicy> > <vmQueueCursor/> > </pendingQueuePolicy> > --> > </policyEntry> > </policyEntries> > </policyMap> > </destinationPolicy> > > > <!-- > The managementContext is used to configure how ActiveMQ is > exposed in > JMX. By default, ActiveMQ uses the MBean server that is started > by > the JVM. For more information, see: > > http://activemq.apache.org/jmx.html > --> > <managementContext> > <managementContext createConnector="false"/> > </managementContext> > <!-- > Configure message persistence for the broker. The default > persistence > mechanism is the KahaDB store (identified by the kahaDB tag). > For more information, see: > > http://activemq.apache.org/persistence.html > --> > <persistenceAdapter> > <kahaDB directory="${activemq.base}/data/kahadb" > journalMaxFileLength="5 mb"/> > </persistenceAdapter> > > > <!-- > The systemUsage controls the maximum amount of space the broker > will > use before slowing down producers. For more information, see: > > http://activemq.apache.org/producer-flow-control.html > --> > <systemUsage> > <systemUsage> > <memoryUsage> > <memoryUsage limit="200 mb"/> > </memoryUsage> > <storeUsage> > <storeUsage limit="50 gb"/> > </storeUsage> > <tempUsage> > <tempUsage limit="100 mb"/> > </tempUsage> > </systemUsage> > </systemUsage> > > > <!-- > The transport connectors expose ActiveMQ over a given protocol to > clients and other brokers. For more information, see: > > http://activemq.apache.org/configuring-transports.html > --> > <transportConnectors> > <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/> > </transportConnectors> > </broker> -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.