activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kelly Campbell" <kelly.a.campb...@gmail.com>
Subject Re: Remove all messages from a queue
Date Fri, 02 Mar 2007 16:01:06 GMT
One problem with Rob's method of initialization is you have to
re-initialize the broker for each unit test which I'd rather not do
for performance reasons.

The problem with the recommended approach James mentioned in the docs
(turning persistence off), is what about when you specifically want to
test the persistence functionality and how your application uses it?

I'm trying to use the local jmx server to do the purge, but it gets an
InstanceNotFoundException for the MX bean. (code below):

MBeanServer jmxServer = ManagementFactory.getPlatformMBeanServer();
Queue queue = createQueue(queueName); // open a connection, session,
create the queue
ObjectName objName = new
        ObjectName("org.apache.activemq:BrokerName=localhost,Type=Queue,Destination="
              + queueName);
jmxServer.invoke(objName, "purge", null, null);


The order of getting the MBeanServer vs. createQueue doesn't seem to
matter. I get the same exception in both cases.

On 3/2/07, Rob Davies <rajdavies@gmail.com> wrote:
> for unit tests - we often set the deleteAllMessagesOnStartup flag on
> the broker
>
> For your case where you are using the vm://transport, create the
> broker separetly in your setUp() - and set the
> deleteAllMessageOnStartup property on the broker before calling start
> () or setting a transport connector (for vm:// you won't need to
> explicitly do this).
>
> cheers,
>
>
> Rob Davies
> http://rajdavies.blogspot.com/
>
>
>
> On 1 Mar 2007, at 22:13, Kelly Campbell wrote:
>
> > I'm trying to figure out how to do this same thing in the current
> > codebase (4.1/4.2). Basically I just want to purge all queues at the
> > beginning of a unit test to ensure a clean start. I have a local vm://
> > broker and would prefer not to go through JMX to do this.
> >
> > Thanks,
> > Kelly
> >
> > On 5/17/06, Hiram Chirino <hiram@hiramchirino.com> wrote:
> >> Correct.
> >>
> >> On 5/17/06, Adrian Tarau <ady@daxtechnologies.com> wrote:
> >> > Thanks. I presume this purge will remove all the messages from the
> >> > persistance, right? not only memory...
> >> >
> >> > Hiram Chirino wrote:
> >> > > Yes.  That should be a map of ActiveMQDestination to
> >> > > o.a.a.b.r.Destination objects.
> >> > > You should be able to do something like ((o.a.a.b.r.Queue)
> >> > > destination).purge();
> >> > >
> >> > > On 5/17/06, Adrian Tarau <ady@daxtechnologies.com> wrote:
> >> > >>
> >> > >> BrokerServer.getBroker().getDestinationMap() ?
> >> > >>
> >> > >> Hiram Chirino wrote:
> >> > >> > Hi Adrian,
> >> > >> >
> >> > >> > If you get a hold of the BrokerServer it should be possible
> >> navigate
> >> > >> > the object tree and be able to get a Queue object and ask
> >> it to delete
> >> > >> > it's messages.
> >> > >> >
> >> > >> >
> >> > >> > On 5/17/06, Adrian Tarau <ady@daxtechnologies.com>
wrote:
> >> > >> >> James? Anybody? Help? :)
> >> > >> >>
> >> > >> >> Adrian Tarau wrote:
> >> > >> >> > James? Any suggestions how to clear a queue with
> >> activemq API
> >> > >> without
> >> > >> >> > JMX? Thanks.
> >> > >> >> >
> >> > >> >> > Adrian Tarau wrote:
> >> > >> >> >> I know the utility of JMX, I use it :) But right
now I
> >> don't
> >> > >> want to
> >> > >> >> >> activate JMX. I saw that ActiveMQ use MX4J 2.1.1(why
> >> don't use
> >> > >> >> >> 3.0.1?) and I have already in my application
MX4J 3.0.1
> >> > >> libraries and
> >> > >> >> >> I remember I used 3.0.1 with a project that
need 2.1.x
> >> and was not
> >> > >> >> >> working.
> >> > >> >> >>
> >> > >> >> >> And of course I cannot have two version of MX4J
in my
> >> application.
> >> > >> >> >>
> >> > >> >> >> James Strachan wrote:
> >> > >> >> >>> On 5/15/06, Adrian Tarau <ady@daxtechnologies.com>
wrote:
> >> > >> >> >>>> Since I use embedded JMS is not necessary
to activate
> >> also JMX,
> >> > >> >> >>>
> >> > >> >> >>> JMX is extremely useful. e.g. in JConsole
you can
> >> watch all of
> >> > >> the
> >> > >> >> >>> mbeans in an application (the garbage collector,
> >> number of
> >> > >> threads,
> >> > >> >> >>> amount of memory free together wtih the
ActiveMQ
> >> mbeans such
> >> > >> as all
> >> > >> >> >>> the destinations & consumers and queue
depths etc
> >> > >> >> >>>
> >> > >> >> >>>
> >> > >> >> >>>>  and JMX
> >> > >> >> >>>> MBeans already use those parts to interrogate
for
> >> values outside
> >> > >> >> >>>> the JMS
> >> > >> >> >>>> standard. Why not to be accessible with
Java code and
> >> only JMX?
> >> > >> >> >>>
> >> > >> >> >>> Everything is accessible via Java code and
JMX; the
> >> reason I
> >> > >> suggest
> >> > >> >> >>> JMX is that
> >> > >> >> >>>
> >> > >> >> >>> (i) it can work with remote brokers too
> >> > >> >> >>> (ii) it works great in JConsole - so its
really easy
> >> to look
> >> > >> at the
> >> > >> >> >>> mbeans whenever you like (rather than having
to write
> >> Java code)
> >> > >> >> >>>
> >> > >> >> >>
> >> > >> >> >
> >> > >> >>
> >> > >> >>
> >> > >> >
> >> > >> >
> >> > >>
> >> > >>
> >> > >
> >> > >
> >> >
> >> >
> >>
> >>
> >> --
> >> Regards,
> >> Hiram
> >>
>
>
>
>
>
>
>

Mime
View raw message