This unit test works:

    @Test
    public void remove() throws JMSException, InterruptedException {

        boolean messageConsumed = false;

        Connection connection = null;
        Session session = null;
        try {
            ConnectionFactory connectionFactory = new
ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
            connection = connectionFactory.createConnection();
            connection.start();

            session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
            Queue queue = session.createQueue("FOO");
            MessageProducer producer = session.createProducer(queue);
            for (int i = 0; i < 5; i++) {
                producer.send(session.createTextMessage("Hi" + i));
            }


            QueueBrowser browser = session.createBrowser(queue);
            Enumeration<?> messagesInQueue = browser.getEnumeration();
            String jmsMessageID = "nan";
            while (messagesInQueue.hasMoreElements()) {
                Message queueMessage = (Message)
messagesInQueue.nextElement();
                System.out.println("Enqueued > " +
queueMessage.getJMSMessageID());
                jmsMessageID = queueMessage.getJMSMessageID();

            }

            System.out.println("Trying to delete > " + jmsMessageID);


            MessageConsumer consumer =
                    session.createConsumer(queue, "JMSMessageID='" +
jmsMessageID + "'");
            Message message = null;
            while ((message = consumer.receive(500)) != null) {
                System.out.println("Consumed > " + message);
            }

        } finally {
            if (session != null)
                session.close();
            if (connection != null)
                connection.close();
        }

    }


On Tue, Jul 16, 2013 at 3:41 PM, Leonardo K. Shikida <shik...@gmail.com>wrote:

> Hi
>
> I've tried
>
> consumer.receive(1000)
>
> without success
>
> []
>
> Leo
>
>
> On Tue, Jul 16, 2013 at 4:25 PM, Christian Posta
> <christian.po...@gmail.com> wrote:
> > Try giving a brief moment between creating your consumers and the call to
> > receiveNoWait():
> >
> >             MessageConsumer consumer =
> >                     session.createConsumer(queue, "JMSMessageID='" +
> > jmsMessageID + "'");
> >             Message message = null;
> >             Thread.sleep(500);
> >             while ((message = consumer.receiveNoWait()) != null) {
> >                 System.out.println("Consumed > " + message);
> >             }
> >
> > Alternatively, use consumer.receive(500)
> >
> >
> > On Tue, Jul 16, 2013 at 11:10 AM, Leonardo K. Shikida <shik...@gmail.com
> >wrote:
> >
> >> Hi
> >>
> >> I am trying to remove (consume) a message from the queue, without
> success.
> >>
> >> Here's my code and the output
> >>
> >> public boolean remove(String jmsMessageID) throws JMSException{
> >>
> >> boolean messageConsumed = false;
> >>
> >> Connection connection = null;
> >> Session session = null;
> >> try {
> >> ConnectionFactory connectionFactory =
> >> this.baseService.getConnectionFactory();
> >> connection = connectionFactory.createConnection();
> >> connection.start();
> >>
> >> // Create a Session
> >> session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
> >>
> >> QueueBrowser browser =
> session.createBrowser(this.baseService.getQueue());
> >>    Enumeration<?> messagesInQueue = browser.getEnumeration();
> >>
> >>    while (messagesInQueue.hasMoreElements()) {
> >>     Message queueMessage = (Message) messagesInQueue.nextElement();
> >>     System.out.println("Enqueued > "+queueMessage.getJMSMessageID());
> >>    }
> >>
> >>    System.out.println("Trying to delete > "+jmsMessageID);
> >>
> >> Queue queue = this.baseService.getQueue();
> >> MessageConsumer consumer =
> >> session.createConsumer(queue,"JMSMessageID='"+jmsMessageID+"'");
> >> Message message = null;
> >> while((message = consumer.receiveNoWait()) != null){
> >> System.out.println("Consumed > "+message);
> >> messageConsumed = true;
> >> }
> >>
> >> } finally {
> >> if (session != null)
> >> session.close();
> >> if (connection != null)
> >> connection.close();
> >> }
> >>
> >> return messageConsumed;
> >> }
> >>
> >> >>>>>>>
> >>
> >> Enqueued          >
> >> ID:7612866413.mydomain.com-58510-1373986917055-5:1:35:1:1
> >> Enqueued          >
> >> ID:7612866413.mydomain.com-58510-1373986917055-5:1:61:1:1
> >> Enqueued          >
> >> ID:7612866413.mydomain.com-58510-1373986917055-5:1:63:1:1
> >> Trying to delete  >
> >> ID:7612866413.mydomain.com-58510-1373986917055-5:1:63:1:1
> >>
> >> (never enter into System.out.println("Consumed > "+message);)
> >>
> >> Am I missing something here?
> >>
> >> []
> >>
> >> Leo
> >>
> >
> >
> >
> > --
> > *Christian Posta*
> > http://www.christianposta.com/blog
> > twitter: @christianposta
>



-- 
*Christian Posta*
http://www.christianposta.com/blog
twitter: @christianposta

Reply via email to