[ 
https://issues.apache.org/jira/browse/CXF-2002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12701469#action_12701469
 ] 

Freeman Fang commented on CXF-2002:
-----------------------------------

And If I use JMS Config like
<bean class="org.apache.cxf.transport.jms.JMSConfigFeature">
                        <property name="jmsConfig">
                            <bean 
class="org.apache.cxf.transport.jms.JMSConfiguration">
                                <property name="connectionFactory">
                                    <ref bean="myConnectionFactory" />
                                </property>
                                <property name="targetDestination">
                                    <value>dynamicQueues/person.queue</value>
                                </property>

                                <property name="useJms11">
                                    <value>true</value>
                                </property>
                                <property name="timeToLive">
                                    <value>500000</value>
                                </property>
                                <property name="concurrentConsumers">
                                    <value>1</value>
                                </property>
                                <property name="maxConcurrentConsumers">
                                    <value>1</value>
                                </property>
                                <property name="maxSuspendedContinuations">
                                    <value>1</value>
                                </property>
                                <property name="cacheLevel">
                                    <value>2</value>
                                </property>
                            </bean>
                        </property>
                    </bean>

then the JMSDestination.activate() won't hang(I needn't change JMSFactory 
source code in this case), but I will always get errors like
ERROR - DefaultMessageListenerContainer - Setup of JMS message listener invoker 
failed - trying to recover
javax.jms.InvalidSelectorException: 
org.apache.cxf.transports.jms.continuations=too-many
        at 
org.apache.activemq.selector.SelectorParser.parse(SelectorParser.java:46)
        at 
org.apache.activemq.ActiveMQMessageConsumer.<init>(ActiveMQMessageConsumer.java:199)
        at 
org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:1011)
        at 
org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:955)
        at 
org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:868)
        at 
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createConsumer(AbstractPollingMessageListenerContainer.java:437)
        at 
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createListenerConsumer(AbstractPollingMessageListenerContainer.java:216)
        at 
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:297)
        at 
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:254)
        at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:870)
        at 
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:810)
        at 
org.springframework.core.task.SimpleAsyncTaskExecutor$ConcurrencyThrottlingRunnable.run(SimpleAsyncTaskExecutor.java:192)
        at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.activemq.selector.TokenMgrError: Lexical error at line 1, 
column 5.  Encountered: "a" (97), after : "."
        at 
org.apache.activemq.selector.SelectorParserTokenManager.getNextToken(SelectorParserTokenManager.java:1056)
        at 
org.apache.activemq.selector.SelectorParser.jj_ntk(SelectorParser.java:1162)
        at 
org.apache.activemq.selector.SelectorParser.multExpr(SelectorParser.java:353)
        at 
org.apache.activemq.selector.SelectorParser.addExpression(SelectorParser.java:319)
        at 
org.apache.activemq.selector.SelectorParser.comparisonExpression(SelectorParser.java:171)
        at 
org.apache.activemq.selector.SelectorParser.equalityExpression(SelectorParser.java:116)
        at 
org.apache.activemq.selector.SelectorParser.andExpression(SelectorParser.java:95)
        at 
org.apache.activemq.selector.SelectorParser.orExpression(SelectorParser.java:74)
        at 
org.apache.activemq.selector.SelectorParser.JmsSelector(SelectorParser.java:66)
        at 
org.apache.activemq.selector.SelectorParser.parse(SelectorParser.java:43)
        ... 12 more
when process inbound jms message. 
Any help is appreciated.
Thanks
Freeman

> Server async jms transport needs dynamic mechanism to throttle message 
> consumption
> ----------------------------------------------------------------------------------
>
>                 Key: CXF-2002
>                 URL: https://issues.apache.org/jira/browse/CXF-2002
>             Project: CXF
>          Issue Type: Improvement
>          Components: Transports
>    Affects Versions: 2.0.9, 2.1.3, 2.0.10
>            Reporter: Ron Gavlin
>            Assignee: Sergey Beryozkin
>
> Currently, the server-side async jms transport has no mechanism to throttle 
> consumption of incoming messages. This becomes problematic in scenarios where 
> a large backlog of messages exists on the input queue. In this case, it is 
> likely that the cxf server will overload its internal work item queues 
> resulting in problems. A dynamic throttling mechanism on the async jms server 
> is required to avoid this problem.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to