activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean Silga <jean.si...@net-vitesse.com>
Subject Re: How can I limit the amount of messages kept in LRUCache?
Date Wed, 05 Jun 2013 16:24:05 GMT
I tried in two places without success.:

1) In the destination policy of the broker

amq.'broker'(id: 'broker', brokerName: 'localhost', useJmx: true,
                persistent: false, advisorySupport='true') {
                    amq.'managementContext' {
                        amq.'managementContext'(connectorPort: 2011,
                                jmxDomainName: 'embeddedBroker')
                    }

                    amq.'systemUsage' {
                        amq.'systemUsage' {
                            amq.'memoryUsage' {
                                amq.'memoryUsage'(limit:"200 mb")
                            }
                        }
                    }

                  *  amq.'destinationPolicy' {*
                        amq.'policyMap' {
                            amq.'policyEntries' {
                                amq.'policyEntry'(topic: "index.mixml",
memoryLimit: "100mb")
                                amq.'policyEntry'(topic:
"index.onedirectory", memoryLimit: "150mb")
*                                amq.'policyEntry'(topic:
"index.onedirectory", durableTopicPrefetch: "2")
                                amq.'policyEntry'(topic:
"index.onedirectory", topicPrefetch: "2")*

                            }
                        }
*                    }*

                    amq.'plugins' {
                        amq.'loggingBrokerPlugin'
                    }

                    if (Environment.current != Environment.TEST) {
                        amq.'transportConnectors' {
                            amq.'transportConnector'(name: 'connector1',
uri:'nio://0.0.0.0:61616')
                            amq.'transportConnector'(name: 'connector2',
uri:'vm://localhost')
                            if (nvconnect.clustering == true &&
Environment.current == Environment.PRODUCTION)
                                amq.'transportConnector'(uri: 'tcp://
0.0.0.0:0',

discoveryUri:'multicast://default?group=nvconnect')
                        }
                    }

                    if (nvconnect.clustering == true && Environment.current
== Environment.PRODUCTION) {
                        amq.'networkConnectors' {
                            amq.'networkConnector'(uri:
'multicast://default?group=nvconnect', duplex: "true", dynamicOnly: "true",
prefetchSize:5) {
                                amq.'dynamicallyIncludedDestinations'{
                                    amq.'topic'(physicalName:'index.mixml')

amq.'topic'(physicalName:'index.mixml.response')

amq.'topic'(physicalName:'index.onedirectory')

amq.'topic'(physicalName:'index.onedirectory.response')
                                }
                            }
                        }
                    }
                }


2) In the connection factory


jmsConnectionFactory(org.springframework.jms.connection.SingleConnectionFactory)
{ bean ->
            bean.dependsOn = "broker"
            clientId = "nv-jms-connection-" + UUID.randomUUID()
            targetConnectionFactory = {
org.apache.activemq.ActiveMQConnectionFactory cf ->
                brokerURL ='vm://localhost'
              *  prefetchPolicy = ref("customPrefetchPolicy")*
            }
        }

*        customPrefetchPolicy(org.apache.activemq.ActiveMQPrefetchPolicy){
bean ->
           topicPrefetch=2
           durableTopicPrefetch=2
        }*


"OnedirectoryIndexJmsListenerContainer"(org.springframework.jms.listener.DefaultMessageListenerContainer)
{
             it.'abstract' = true
             pubSubDomain = true
             autoStartup = false
             concurrentConsumers = 1
             subscriptionDurable = true
*             connectionFactory = ref("jmsConnectionFactory")*
             messageSelector = null
             cacheLevel = DefaultMessageListenerContainer.CACHE_SESSION
             durableSubscriptionName = "onedirectory.index-" +
UUID.randomUUID()
         }




On Wed, Jun 5, 2013 at 6:05 PM, Christian Posta
<christian.posta@gmail.com>wrote:

> yes, that's used in many places. where in the broker are you trying to tune
> it? the store?
>
>
> On Wed, Jun 5, 2013 at 9:00 AM, Jean Silga <jean.silga@net-vitesse.com
> >wrote:
>
> > I am talking about this LRUCache: org.apache.activemq.util.LRUCache.
> >
> >
> > On Wed, Jun 5, 2013 at 5:45 PM, Christian Posta
> > <christian.posta@gmail.com>wrote:
> >
> > > Which LRUCache are you talking about?
> > >
> > >
> > >
> > > On Wed, Jun 5, 2013 at 8:19 AM, Jean Silga <jean.silga@net-vitesse.com
> > > >wrote:
> > >
> > > > Hi guys
> > > >
> > > > We are currently using activemq for one of our project and we run
> into
> > > some
> > > > out of memory trouble lately. Our application performs some caching
> > every
> > > > two hours: It reads the information to cache, encapsulates it in an
> > > > ActiveMQObjectMessage object, sends the ActiveMQObjectMessage object
> > to a
> > > > topic so that the consumer can receive it and perform the caching.
> The
> > > > problem is that  the LRUCache is keeping up to 100 messages in its
> > cache
> > > > (maxCacheSize=100), and this is causing an out of memory error
> because
> > > each
> > > > message is quite big (10 MB of size). I tried to solve the issue by
> > using
> > > > the PrefetchPolicy feature, but that does not seem to have and impact
> > on
> > > > how much messages are kept in LRUCache. Is it possible to specify the
> > > > amount of messages kept in the LRUCache? How ?
> > > >
> > > >  Here are the versions of the plugins/frameworks I am using:
> > > > Activemq         5.4.0
> > > > JMS                 0.5.1
> > > > xbean-spring   3.6
> > > > Grails               1.3.6
> > > > Java                 1.6
> > > > I am using topics and non-persistent messaging.
> > > >
> > > > Thank you very much
> > > >
> > > > --
> > > >
> > > >
> > > > *Jean Silga *
> > > > Software Engineer at Netvitesse
> > > > +33 (0) 9 72 22 44 10
> > > >
> > >
> > >
> > >
> > > --
> > > *Christian Posta*
> > > http://www.christianposta.com/blog
> > > twitter: @christianposta
> > >
> >
> >
> >
> > --
> >
> >
> > *Jean Silga *
> > Software Engineer at Netvitesse
> > +33 (0) 9 72 22 44 10
> >
>
>
>
> --
> *Christian Posta*
> http://www.christianposta.com/blog
> twitter: @christianposta
>



-- 


*Jean Silga *
Software Engineer at Netvitesse
+33 (0) 9 72 22 44 10

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message