Package org.apache.qpid.server.queue

Examples of org.apache.qpid.server.queue.AMQMessage


    {
        AMQQueue queue = new AMQQueue(new AMQShortString("a#"), false, null, false, _vhost);
        _exchange.registerQueue(new AMQShortString("a.#.*.#.d"), queue, null);


        AMQMessage message = createMessage("a.c.b.b.c");

        try
        {
            _exchange.route(message);
            message.routingComplete(_store, _context, new MessageHandleFactory());
            fail("Message has route and should not be routed");
        }
        catch (AMQException nre)
        {
        }

        Assert.assertEquals(0, queue.getMessageCount());

        message = createMessage("a.a.b.c.d");

        try
        {
            _exchange.route(message);
            message.routingComplete(_store, _context, new MessageHandleFactory());
        }
        catch (AMQException nre)
        {
            fail("Message has no route and should be routed");
        }
View Full Code Here


    {
        AMQQueue queue = new AMQQueue(new AMQShortString("a"), false, null, false, _vhost);
        _exchange.registerQueue(new AMQShortString("a.b.c.d"), queue, null);


        AMQMessage message = createMessage("a.b.c");

        try
        {
            _exchange.route(message);
            message.routingComplete(_store, _context, new MessageHandleFactory());
            fail("Message has route and should not be routed");
        }
        catch (AMQException nre)
        {
        }
View Full Code Here

    {
        AMQQueue queue = new AMQQueue(new AMQShortString("a"), false, null, false, _vhost);
        _exchange.registerQueue(new AMQShortString("a.b"), queue, null);


        AMQMessage message = createMessage("a.b.c");

        try
        {
            _exchange.route(message);
            message.routingComplete(_store, _context, new MessageHandleFactory());
            fail("Message has route and should not be routed");
        }
        catch (AMQException nre)
        {
        }
View Full Code Here

    {
        AMQQueue queue = new AMQQueue(new AMQShortString("a"), false, null, false, _vhost);
        _exchange.registerQueue(new AMQShortString("a.b"), queue, null);


        AMQMessage message = createMessage("a");

        try
        {
            _exchange.route(message);
            message.routingComplete(_store, _context, new MessageHandleFactory());
            fail("Message has route and should not be routed");
        }
        catch (AMQException nre)
        {
        }
View Full Code Here

        TransactionalContext trancontext = new NonTransactionalContext(_store, _context, null,
                                                                       new LinkedList<RequiredDeliveryException>(),
                                                                       new HashSet<Long>());

        AMQMessage message = new AMQMessage(0L, info, trancontext);
        message.setContentHeaderBody(new ContentHeaderBody());

        return message;
    }
View Full Code Here

        _exchange.registerQueue(new AMQShortString("a.*.#.b"), queue, null);


        MessagePublishInfo info = new PublishInfo(new AMQShortString("a.b"));

        AMQMessage message = new AMQMessage(0L, info, null);

        try
        {
            _exchange.route(message);
            fail("Message has no route and shouldn't be routed");
View Full Code Here

    {
        AMQQueue queue = new AMQQueue(new AMQShortString("ab"), false, null, false, _vhost);
        _exchange.registerQueue(new AMQShortString("a.b"), queue, null);


        AMQMessage message = createMessage("a.b");

        try
        {
            _exchange.route(message);
            message.routingComplete(_store, _context, new MessageHandleFactory());
        }
        catch (AMQException nre)
        {
            fail("Message has  route and should be routed");
        }

        Assert.assertEquals(1, queue.getMessageCount());

        Assert.assertEquals("Wrong message recevied", message, queue.getMessagesOnTheQueue().get(0));

        queue.deleteMessageFromTop(_context);
        Assert.assertEquals(0, queue.getMessageCount());


        message = createMessage("a.c");

        try
        {
            _exchange.route(message);
            message.routingComplete(_store, _context, new MessageHandleFactory());
            fail("Message has no route and should fail to be routed");
        }
        catch (AMQException nre)
        {
        }
View Full Code Here

            {
                return null;
            }
        };

        AMQMessage message = new AMQMessage(_store.getNewMessageId(),
                                            info,
                                            new NonTransactionalContext(_store, _storeContext, null, null, null),
                                            createPersistentContentHeader());
       
        message = message.takeReference();
        // we call routing complete to set up the handle
        message.routingComplete(_store, _storeContext, new MessageHandleFactory());
        assertTrue(_store.getMessageMetaDataMap().size() == 1);
        message = message.takeReference();
        message.decrementReference(_storeContext);
        assertTrue(_store.getMessageMetaDataMap().size() == 1);
    }
View Full Code Here

    }

    public void setPublishFrame(MessagePublishInfo info, AMQProtocolSession publisher) throws AMQException
    {

        _currentMessage = new AMQMessage(_messageStore.getNewMessageId(), info, _txnContext);
        _currentMessage.setPublisher(publisher);
    }
View Full Code Here

        _unacknowledgedMessageMap.visit(new UnacknowledgedMessageMap.Visitor()
            {
                public boolean callback(UnacknowledgedMessage message) throws AMQException
                {
                    AMQShortString consumerTag = message.consumerTag;
                    AMQMessage msg = message.message;
                    msg.setRedelivered(true);
                    if (consumerTag != null)
                    {
                        // Consumer exists
                        if (_consumerTag2QueueMap.containsKey(consumerTag))
                        {
                            msgToResend.add(message);
                        }
                        else // consumer has gone
                        {
                            msgToRequeue.add(message);
                        }
                    }
                    else
                    {
                        // Message has no consumer tag, so was "delivered" to a GET
                        // or consumer no longer registered
                        // cannot resend, so re-queue.
                        if (message.queue != null)
                        {
                            if (requeue)
                            {
                                msgToRequeue.add(message);
                            }
                            else
                            {
                                _log.info("No DeadLetter Queue and requeue not requested so dropping message:" + message);
                            }
                        }
                        else
                        {
                            _log.info("Message.queue is null and no DeadLetter Queue so dropping message:" + message);
                        }
                    }

                    // false means continue processing
                    return false;
                }

                public void visitComplete()
                { }
            });

        // Process Messages to Resend
        if (_log.isDebugEnabled())
        {
            if (!msgToResend.isEmpty())
            {
                _log.debug("Preparing (" + msgToResend.size() + ") message to resend.");
            }
            else
            {
                _log.debug("No message to resend.");
            }
        }

        for (UnacknowledgedMessage message : msgToResend)
        {
            AMQMessage msg = message.message;

            // Our Java Client will always suspend the channel when resending!
            // If the client has requested the messages be resent then it is
            // their responsibility to ensure that thay are capable of receiving them
            // i.e. The channel hasn't been server side suspended.
            // if (isSuspended())
            // {
            // _log.info("Channel is suspended so requeuing");
            // //move this message to requeue
            // msgToRequeue.add(message);
            // }
            // else
            // {
            // release to allow it to be delivered
            msg.release(message.queue);

            // Without any details from the client about what has been processed we have to mark
            // all messages in the unacked map as redelivered.
            msg.setRedelivered(true);

            Subscription sub = msg.getDeliveredSubscription(message.queue);

            if (sub != null)
            {
                // Get the lock so we can tell if the sub scription has closed.
                // will stop delivery to this subscription until the lock is released.
                // note: this approach would allow the use of a single queue if the
                // PreDeliveryQueue would allow head additions.
                // In the Java Qpid client we are suspended whilst doing this so it is all rather Mute..
                // needs guidance from AMQP WG Model SIG
                synchronized (sub.getSendLock())
                {
                    if (sub.isClosed())
                    {
                        if (_log.isDebugEnabled())
                        {
                            _log.debug("Subscription(" + System.identityHashCode(sub)
                                + ") closed during resend so requeuing message");
                        }
                        // move this message to requeue
                        msgToRequeue.add(message);
                    }
                    else
                    {
                        if (_log.isDebugEnabled())
                        {
                            _log.debug("Requeuing " + msg.debugIdentity() + " for resend via sub:"
                                + System.identityHashCode(sub));
                        }

                        sub.addToResendQueue(msg);
                        _unacknowledgedMessageMap.remove(message.deliveryTag);
View Full Code Here

TOP

Related Classes of org.apache.qpid.server.queue.AMQMessage

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.