activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From iDemmel <idem...@hotmail.com>
Subject Re: [BEGINNER] Question about configuration
Date Mon, 09 Aug 2010 14:45:15 GMT

Hello Reynald

thank you for the quick and accurate reply, it definitely did help me.
I did some more 'research' and found out that the Java JMS API provides a
method to indicate whether a method should be treated as persistent or not:
http://activemq.apache.org/what-is-the-difference-between-persistent-and-non-persistent-delivery.html

Thanks again

Andrew


Reynald Borer wrote:
> 
>   Hello Andrew,
> 
> Unfortunately, you cannot by server side configuration decide whether 
> messages are kept in memory or written on disk. This is done by the 
> producer, who decides if messages are persistent (this is the default) 
> or not.
> 
> Persistent messages are always written to disk in order to ensure that 
> if a failure on the broker happens, no messages are lost. On the 
> contrary, non-persistent messages are kept in memory until the memory 
> limit is reached. When memory limit is reached, messages are paged to 
> disk until tempUsage is reached (after what producers are blocked until 
> the limit goes down).
> 
> According to the wiki page on 
> http://activemq.apache.org/producer-flow-control.html , there seems to 
> be a way to ensure messages are always kept in memory (I have not tested 
> it though). Here is what the documentation says:
> 
> -----------------
> 
> Note that, since the introduction of the new file cursor in ActiveMQ 
> 5.x, non-persisted messages are shunted into the temporary file store to 
> reduce the amount of memory used for non-persistent messaging. As a 
> result, you may find that a queue's memoryLimit is never reached, as the 
> cursor doesn't use very much memory. If you really do want to keep all 
> your non-persistent messages in memory, and stop producers when the 
> limit is reached, you should configure the <vmQueueCursor>.
> 
>                  <policyEntry queue=">"  producerFlowControl="true" 
> memoryLimit="1mb">
>                    <pendingQueuePolicy>
>                      <vmQueueCursor/>
>                    </pendingQueuePolicy>
>                  </policyEntry>
> 
> The fragment above will ensure that all non-persistent queue messages 
> are kept in memory, with each queue having a limit of 1Mb.
> 
> --------------------
> 
> Hope it help.
> 
> Cheers,
> Reynald
> 
> 
> On 08/09/2010 02:35 PM, iDemmel wrote:
>> Hello
>>
>> I need the broker to hold me 50,000 messages in a queue before starting
>> to
>> write to my HDD.
>> Being new to ActiveMQ, I tried changing the config a bit. I tried to
>> change
>> the following config(I couldn't find something for amount of messages, so
>> I
>> just took memory), with no success:
>> 1)<policyEntry queue=">" producerFlowControl="true" memoryLimit="128mb">
>> 2)<systemUsage>
>>              <systemUsage>
>>                  <memoryUsage><memoryUsage limit="256 mb"/></memoryUsage>
>>                  <storeUsage><storeUsage limit="1 gb"
>> name="foo"/></storeUsage>
>>                  <tempUsage><tempUsage limit="100 mb"/></tempUsage>
>>              </systemUsage>
>>       </systemUsage>
>>
>> Whatever I do with these values, once I start producing (a lot), my HDD
>> goes
>> crazy, even from the start.
>> I'm just a beginner, and I'm probably missing something basic but please
>> help me out.
>>
>> To summarize my questions:
>> 1) How do I keep the queue in RAM only until it reaches 50k entries ?
>> 2) Is it possible to configure the above with an amount of messages
>> instead
>> of memory?
>>
>> Thank you for your time
>>
>> Andrew
> 
> 

-- 
View this message in context: http://old.nabble.com/-BEGINNER--Question-about-configuration-tp29387413p29388696.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message