You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Dan Tran <da...@gmail.com> on 2009/10/02 07:38:25 UTC

Re: Expired message - does it work?


It turns out I am using topic and when my consumer is destroyed, all
messages also destroyed, but the stats still lingering in the jconsole and
this is were confusion starts.

thanks

-Dan


Dan Tran wrote:
> 
> 
> Hi Felix,
> 
> Thanks for the info, both of my producer and consumer's clocks are synced. 
> 
> To stop the message transfer from producer to consumer, I send a control
> message to produce trigger it to stop and then shutdown the consumer
> listener.  That is why we can see some messages left on the queue
> 
> thanks
> 
> -Dan
> 
> 
> fehm wrote:
>> 
>> Hi Dan,
>> 
>> If you play with message expiration make sure that your
>> consumer/broker/producer have the same time since the TimeTtoLive of the
>> message is set relative to your producer. If you broker is in the future
>> relative to your producer and the gap is greater than your TTL you won't
>> see any messages on the consumer.
>> 
>> How exactly do you "stop" you consumer ?
>> Remember that a the dequeue counter only increase if message has been
>> acknowledged by the consumer. Inflight again means that this number of
>> messages have not (yet) been acknowledged by the consumer.
>> Can it be that the consumer received the message but couldn't ack the 13
>> messages since you stopped it ?
>> 
>> 
>> Cheers,
>> Felix
>> 
>> 
>> 
>> 
>> Dan Tran wrote:
>>> 
>>> 
>>> Hi,  I am testing 5.3-SNAPSHOT to pick up expired message enhancement
>>> where the message will be automatically removed when timed out.
>>> 
>>> I have multiple topics with each has a pair of producer/consumer.  All
>>> messages are memory base, where 'memoryUsage' is used to do the producer
>>> flow control. All producer messages are set to have time to live value. 
>>> However, when I stop both producer and consumer during a heavy producer
>>> to consumer communication.  Some messages are left in the queue.  The
>>> jconsole shows the expiredCount only set at 0 after waiting for time to
>>> expired.
>>> 
>>> Here is some stats at my topic.
>>> 
>>> enqueueCount=21699
>>> dispatchCount=31698
>>> dequeueCount=21685
>>> inFlightCount=13
>>> expriredCount=0
>>> 
>>> consumerCount=0
>>> producerCount=0  ( still alive but does nothing )
>>> 
>>> queueSize=21699
>>> 
>>> here is my broker configuration
>>> 
>>>   <amq:broker useJmx="true" persistent="false" advisorySupport="false">
>>> 
>>>     <!-- Destination specific policies using destination names or
>>> wildcards -->
>>> 
>>>     <amq:destinationPolicy>
>>>       <amq:policyMap>
>>>         <amq:policyEntries>
>>>           <amq:policyEntry topic=">"  producerFlowControl="true"
>>> memoryLimit="${fdb.broker.agent.memoryLimit} mb" />
>>>         </amq:policyEntries>
>>>       </amq:policyMap>
>>>     </amq:destinationPolicy>
>>> 
>>>     <amq:sslContext>
>>>       <amq:sslContext
>>> keyStore="file:${FORTIDB_HOME}/conf/.jmsBrokerKeyStore"
>>> keyStorePassword="${fdb.broker.keyStorePassword}" />
>>>     </amq:sslContext>
>>> 
>>>     <!--  The maximum about of space the broker will use before slowing
>>> down producers -->
>>>     <amq:systemUsage>
>>>       <amq:systemUsage>
>>>         <amq:memoryUsage>
>>>           <amq:memoryUsage limit="${fdb.broker.memoryUsage} mb" />
>>>         </amq:memoryUsage>
>>>       </amq:systemUsage>
>>>     </amq:systemUsage>
>>>     
>>>     <amq:transportConnectors>
>>>       <amq:transportConnector
>>> uri="${fdb.broker.protocol}://0.0.0.0:${fdb.broker.port}" />
>>>     </amq:transportConnectors>
>>> 
>>> 
>>>   </amq:broker>
>>> 
>>> 
>>> Any helps and suggestion are greatly appreciated.
>>> 
>>> -Dan
>>> 
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Expired-message---does-it-work--tp25645401p25710675.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: Expired message - does it work?

Posted by Dan Tran <da...@gmail.com>.

scratch that,  i need jmsTemplate.setExplicitQosEnabled( true ); as well

sorry for the noise.

-D


Dan Tran wrote:
> 
> 
> I would like to bring discussion back where I cannot get message in my
> queue to expire.
> 
> I am using JmsTemplate producer to send messages to the queue with no
> consumer ( intended),  here is the snippet
> 
>     @Resource
>     private JmsTemplate jmsTemplate;
>     
>     @PostConstruct
>     public void afterPropertiesSet()
>     {
>         jmsTemplate.setDeliveryMode( DeliveryMode.NON_PERSISTENT );
>         jmsTemplate.setTimeToLive( messageTimeToLive );
>     }
> 
> However the messages ( found in Jconsole) stay in to queue with delivery
> mode set to PERSISTENT and expired time set to 0. It seems my setup has no
> affect
> 
> 
> Is it the right way?
> 
> -Dan
> 
> 
> 
> Dan Tran wrote:
>> 
>> 
>> It turns out I am using topic and when my consumer is destroyed, all
>> messages also destroyed, but the stats still lingering in the jconsole
>> and this is were confusion starts.
>> 
>> thanks
>> 
>> -Dan
>> 
>> 
>> Dan Tran wrote:
>>> 
>>> 
>>> Hi Felix,
>>> 
>>> Thanks for the info, both of my producer and consumer's clocks are
>>> synced. 
>>> 
>>> To stop the message transfer from producer to consumer, I send a control
>>> message to produce trigger it to stop and then shutdown the consumer
>>> listener.  That is why we can see some messages left on the queue
>>> 
>>> thanks
>>> 
>>> -Dan
>>> 
>>> 
>>> fehm wrote:
>>>> 
>>>> Hi Dan,
>>>> 
>>>> If you play with message expiration make sure that your
>>>> consumer/broker/producer have the same time since the TimeTtoLive of
>>>> the message is set relative to your producer. If you broker is in the
>>>> future relative to your producer and the gap is greater than your TTL
>>>> you won't see any messages on the consumer.
>>>> 
>>>> How exactly do you "stop" you consumer ?
>>>> Remember that a the dequeue counter only increase if message has been
>>>> acknowledged by the consumer. Inflight again means that this number of
>>>> messages have not (yet) been acknowledged by the consumer.
>>>> Can it be that the consumer received the message but couldn't ack the
>>>> 13 messages since you stopped it ?
>>>> 
>>>> 
>>>> Cheers,
>>>> Felix
>>>> 
>>>> 
>>>> 
>>>> 
>>>> Dan Tran wrote:
>>>>> 
>>>>> 
>>>>> Hi,  I am testing 5.3-SNAPSHOT to pick up expired message enhancement
>>>>> where the message will be automatically removed when timed out.
>>>>> 
>>>>> I have multiple topics with each has a pair of producer/consumer.  All
>>>>> messages are memory base, where 'memoryUsage' is used to do the
>>>>> producer flow control. All producer messages are set to have time to
>>>>> live value.  However, when I stop both producer and consumer during a
>>>>> heavy producer to consumer communication.  Some messages are left in
>>>>> the queue.  The jconsole shows the expiredCount only set at 0 after
>>>>> waiting for time to expired.
>>>>> 
>>>>> Here is some stats at my topic.
>>>>> 
>>>>> enqueueCount=21699
>>>>> dispatchCount=31698
>>>>> dequeueCount=21685
>>>>> inFlightCount=13
>>>>> expriredCount=0
>>>>> 
>>>>> consumerCount=0
>>>>> producerCount=0  ( still alive but does nothing )
>>>>> 
>>>>> queueSize=21699
>>>>> 
>>>>> here is my broker configuration
>>>>> 
>>>>>   <amq:broker useJmx="true" persistent="false"
>>>>> advisorySupport="false">
>>>>> 
>>>>>     <!-- Destination specific policies using destination names or
>>>>> wildcards -->
>>>>> 
>>>>>     <amq:destinationPolicy>
>>>>>       <amq:policyMap>
>>>>>         <amq:policyEntries>
>>>>>           <amq:policyEntry topic=">"  producerFlowControl="true"
>>>>> memoryLimit="${fdb.broker.agent.memoryLimit} mb" />
>>>>>         </amq:policyEntries>
>>>>>       </amq:policyMap>
>>>>>     </amq:destinationPolicy>
>>>>> 
>>>>>     <amq:sslContext>
>>>>>       <amq:sslContext
>>>>> keyStore="file:${FORTIDB_HOME}/conf/.jmsBrokerKeyStore"
>>>>> keyStorePassword="${fdb.broker.keyStorePassword}" />
>>>>>     </amq:sslContext>
>>>>> 
>>>>>     <!--  The maximum about of space the broker will use before
>>>>> slowing down producers -->
>>>>>     <amq:systemUsage>
>>>>>       <amq:systemUsage>
>>>>>         <amq:memoryUsage>
>>>>>           <amq:memoryUsage limit="${fdb.broker.memoryUsage} mb" />
>>>>>         </amq:memoryUsage>
>>>>>       </amq:systemUsage>
>>>>>     </amq:systemUsage>
>>>>>     
>>>>>     <amq:transportConnectors>
>>>>>       <amq:transportConnector
>>>>> uri="${fdb.broker.protocol}://0.0.0.0:${fdb.broker.port}" />
>>>>>     </amq:transportConnectors>
>>>>> 
>>>>> 
>>>>>   </amq:broker>
>>>>> 
>>>>> 
>>>>> Any helps and suggestion are greatly appreciated.
>>>>> 
>>>>> -Dan
>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Expired-message---does-it-work--tp25645401p25935492.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: Expired message - does it work?

Posted by Dan Tran <da...@gmail.com>.

I would like to bring discussion back where I cannot get message in my queue
to expire.

I am using JmsTemplate producer to send messages to the queue with no
consumer ( intended),  here is the snippet

    @Resource
    private JmsTemplate jmsTemplate;
    
    @PostConstruct
    public void afterPropertiesSet()
    {
        jmsTemplate.setDeliveryMode( DeliveryMode.NON_PERSISTENT );
        jmsTemplate.setTimeToLive( messageTimeToLive );
    }

However the messages ( found in Jconsole) stay in to queue with delivery
mode set to PERSISTENT and expired time set to 0. It seems my setup has no
affect


Is it the right way?

-Dan



Dan Tran wrote:
> 
> 
> It turns out I am using topic and when my consumer is destroyed, all
> messages also destroyed, but the stats still lingering in the jconsole and
> this is were confusion starts.
> 
> thanks
> 
> -Dan
> 
> 
> Dan Tran wrote:
>> 
>> 
>> Hi Felix,
>> 
>> Thanks for the info, both of my producer and consumer's clocks are
>> synced. 
>> 
>> To stop the message transfer from producer to consumer, I send a control
>> message to produce trigger it to stop and then shutdown the consumer
>> listener.  That is why we can see some messages left on the queue
>> 
>> thanks
>> 
>> -Dan
>> 
>> 
>> fehm wrote:
>>> 
>>> Hi Dan,
>>> 
>>> If you play with message expiration make sure that your
>>> consumer/broker/producer have the same time since the TimeTtoLive of the
>>> message is set relative to your producer. If you broker is in the future
>>> relative to your producer and the gap is greater than your TTL you won't
>>> see any messages on the consumer.
>>> 
>>> How exactly do you "stop" you consumer ?
>>> Remember that a the dequeue counter only increase if message has been
>>> acknowledged by the consumer. Inflight again means that this number of
>>> messages have not (yet) been acknowledged by the consumer.
>>> Can it be that the consumer received the message but couldn't ack the 13
>>> messages since you stopped it ?
>>> 
>>> 
>>> Cheers,
>>> Felix
>>> 
>>> 
>>> 
>>> 
>>> Dan Tran wrote:
>>>> 
>>>> 
>>>> Hi,  I am testing 5.3-SNAPSHOT to pick up expired message enhancement
>>>> where the message will be automatically removed when timed out.
>>>> 
>>>> I have multiple topics with each has a pair of producer/consumer.  All
>>>> messages are memory base, where 'memoryUsage' is used to do the
>>>> producer flow control. All producer messages are set to have time to
>>>> live value.  However, when I stop both producer and consumer during a
>>>> heavy producer to consumer communication.  Some messages are left in
>>>> the queue.  The jconsole shows the expiredCount only set at 0 after
>>>> waiting for time to expired.
>>>> 
>>>> Here is some stats at my topic.
>>>> 
>>>> enqueueCount=21699
>>>> dispatchCount=31698
>>>> dequeueCount=21685
>>>> inFlightCount=13
>>>> expriredCount=0
>>>> 
>>>> consumerCount=0
>>>> producerCount=0  ( still alive but does nothing )
>>>> 
>>>> queueSize=21699
>>>> 
>>>> here is my broker configuration
>>>> 
>>>>   <amq:broker useJmx="true" persistent="false" advisorySupport="false">
>>>> 
>>>>     <!-- Destination specific policies using destination names or
>>>> wildcards -->
>>>> 
>>>>     <amq:destinationPolicy>
>>>>       <amq:policyMap>
>>>>         <amq:policyEntries>
>>>>           <amq:policyEntry topic=">"  producerFlowControl="true"
>>>> memoryLimit="${fdb.broker.agent.memoryLimit} mb" />
>>>>         </amq:policyEntries>
>>>>       </amq:policyMap>
>>>>     </amq:destinationPolicy>
>>>> 
>>>>     <amq:sslContext>
>>>>       <amq:sslContext
>>>> keyStore="file:${FORTIDB_HOME}/conf/.jmsBrokerKeyStore"
>>>> keyStorePassword="${fdb.broker.keyStorePassword}" />
>>>>     </amq:sslContext>
>>>> 
>>>>     <!--  The maximum about of space the broker will use before slowing
>>>> down producers -->
>>>>     <amq:systemUsage>
>>>>       <amq:systemUsage>
>>>>         <amq:memoryUsage>
>>>>           <amq:memoryUsage limit="${fdb.broker.memoryUsage} mb" />
>>>>         </amq:memoryUsage>
>>>>       </amq:systemUsage>
>>>>     </amq:systemUsage>
>>>>     
>>>>     <amq:transportConnectors>
>>>>       <amq:transportConnector
>>>> uri="${fdb.broker.protocol}://0.0.0.0:${fdb.broker.port}" />
>>>>     </amq:transportConnectors>
>>>> 
>>>> 
>>>>   </amq:broker>
>>>> 
>>>> 
>>>> Any helps and suggestion are greatly appreciated.
>>>> 
>>>> -Dan
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Expired-message---does-it-work--tp25645401p25935339.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.