You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Ryan Moquin <fr...@gmail.com> on 2008/08/20 21:52:13 UTC

ActiveMQ 5.1 messages on nondurable topic never go away

So I upgraded to Servicemix 3.3-SNAPSHOT since it appears that 3.2.2 is not
going to work for me since I have to restart it after every 1100 jms
messages or my Servicemix services start hanging (or will only be allowed to
send a message once every maybe 20 seconds).  I have no clue why all of a
sudden this situation has become so severe now compared to before (I'm
guessing it's been because I haven't actually done any load testing really
until now).  I've basically set every option I can, to prevent this
condition and not a single one takes effect.  Anyhow, I was hoping the
upgraded versions in 3.3 (ActiveMQ 5.1) would allow me to take advantage of
functionality to make messages to my high volume topic to be non-persistent
and actually get discarded.  Well, I have this configuration running
currently:

<jms:provider service="feed:feed-jms-service"
                endpoint="notification"
                pubSubDomain="true"
                destinationName="topic.feed-notication"
                connectionFactory="#connectionFactory"
                deliveryMode="1"
                timeToLive="1000"/>

  <bean id="connectionFactory"
class="org.apache.activemq.pool.PooledConnectionFactory">
    <property name="connectionFactory">
      <bean class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://localhost:61616" />
        <property name="useCompression" value="true" />
        <property name="useAsyncSend" value="true" />
      </bean>
    </property>
    <!--Configure maximum sessions per connection -->
    <property name="maximumActive" value="1" />
  </bean>

To make it short, I have the producer set to NON-PERSISTENT, I have the time
to live for messages set to 1 second and I am setting useAsyncSend.  Even
with all that sending, my producer becomes completely unresponsive and hangs
attempting to send a message after about 1300 messages are sent.  It does
this every since time.  Now, I also have a consumer that was started before
I started the producer sending any messages.  So every single message on my
topic has been received by my consumer (the dequeue and enqueue numbers
match), but yet my producer is still being blocked because of this whole
persistence and flow control thing.

Am I just really dense or is there some sort of magic parameter that I'm
missing in all this that actually makes these settings work?  No matter what
I do, I just cannot seem to get these messages to become non-persistent so
that my services that use that topic will stop blocking.  Not to mention
that my performance is lower due to persistence being on when I don't want
it to be, hence I'm losing out on performance that would be great to have
due to the volume I'm processing.  The other option is that if the ActiveMQ
team can tell me that those options definitely work in 5.1 and that the
problem has to be something I'm doing in Servicemix, that's fine.  I'm just
at a complete loss as to where and what the problem is at this point so I
can try to somehow get past it.

Thanks for any help/suggestions anyone can give me.

Ryan