Package org.apache.qpid.server.ack

Examples of org.apache.qpid.server.ack.UnacknowledgedMessage


        int i = 1;
        while (i <= map.size())
        {
            Map.Entry<Long, UnacknowledgedMessage> entry = it.next();
            assertTrue(entry.getKey() == i + 5);
            UnacknowledgedMessage unackedMsg = entry.getValue();
            assertTrue(unackedMsg.queue == _queue);
            ++i;
        }
    }
View Full Code Here


        int i = 1;
        while (i <= map.size())
        {
            Map.Entry<Long, UnacknowledgedMessage> entry = it.next();
            assertTrue(entry.getKey() == i + 5);
            UnacknowledgedMessage unackedMsg = entry.getValue();
            assertTrue(unackedMsg.queue == _queue);
            ++i;
        }
    }
View Full Code Here

     */
    public void addUnacknowledgedMessage(AMQMessage message, long deliveryTag, String consumerTag, AMQQueue queue)
    {
        synchronized(_unacknowledgedMessageMapLock)
        {
            _unacknowledgedMessageMap.put(deliveryTag, new UnacknowledgedMessage(queue, message, consumerTag, deliveryTag));
            _lastDeliveryTag = deliveryTag;
            checkSuspension();
        }
    }
View Full Code Here

    {
        synchronized(_unacknowledgedMessageMapLock)
        {
            for (Map.Entry<Long, UnacknowledgedMessage> unacked : _unacknowledgedMessageMap.entrySet())
            {
                final UnacknowledgedMessage unackedMsg = unacked.getValue();
                // we can compare the reference safely in this case
                if (unackedMsg.queue == queue)
                {
                    unackedMsg.queue = null;
                    try
View Full Code Here

            }

        }
        else
        {
            UnacknowledgedMessage msg;
            synchronized(_unacknowledgedMessageMapLock)
            {
                msg = _unacknowledgedMessageMap.remove(deliveryTag);
            }

            if (msg == null)
            {
                _log.trace("Single ack on delivery tag " + deliveryTag + " not known for channel:" + _channelId);
                throw new AMQException("Single ack on delivery tag " + deliveryTag + " not known for channel:" + _channelId);
            }
            msg.discard();
            if (_log.isTraceEnabled())
            {
                _log.trace("Received non-multiple ack for messaging with delivery tag " + deliveryTag);
            }
        }
View Full Code Here

                          " on channel:" + channel.debugIdentity());
        }

        long deliveryTag = body.getDeliveryTag();

        UnacknowledgedMessage message = channel.getUnacknowledgedMessageMap().get(deliveryTag);

        if (message == null)
        {
            _logger.warn("Dropping reject request as message is null for tag:" + deliveryTag);
//            throw evt.getMethod().getChannelException(AMQConstant.NOT_FOUND, "Delivery Tag(" + deliveryTag + ")not known");
        }
        else
        {
            if (message.isQueueDeleted() || message.getQueue().isDeleted())
            {
                _logger.warn("Message's Queue as already been purged, unable to Reject. " +
                             "Dropping message should use Dead Letter Queue");
                //sendtoDeadLetterQueue(msg)               
                return;
            }

            if (!message.getMessage().isReferenced())
            {
                _logger.warn("Message as already been purged, unable to Reject.");
                return;
            }


            if (_logger.isDebugEnabled())
            {
                _logger.debug("Rejecting: DT:" + deliveryTag + "-" + message.getMessage().debugIdentity() +
                              ": Requeue:" + body.getRequeue() +
                              //": Resend:" + evt.getMethod().resend +
                              " on channel:" + channel.debugIdentity());
            }
View Full Code Here

            }
        }

        synchronized (_unacknowledgedMessageMap.getLock())
        {
            _unacknowledgedMessageMap.add(deliveryTag, new UnacknowledgedMessage(entry, consumerTag, deliveryTag));
            checkSuspension();
        }
    }
View Full Code Here

     *
     * @throws AMQException If something goes wrong.
     */
    public void requeue(long deliveryTag) throws AMQException
    {
        UnacknowledgedMessage unacked = _unacknowledgedMessageMap.remove(deliveryTag);

        if (unacked != null)
        {

            // Ensure message is released for redelivery
            if (!unacked.isQueueDeleted())
            {
                unacked.entry.release();
            }

            // Mark message redelivered
            unacked.getMessage().setRedelivered(true);

            // Deliver these messages out of the transaction as their delivery was never
            // part of the transaction only the receive.
            TransactionalContext deliveryContext;
            if (!(_txnContext instanceof NonTransactionalContext))
            {
                // if (_nonTransactedContext == null)
                {
                    _nonTransactedContext =
                            new NonTransactionalContext(_messageStore, _storeContext, this, _returnMessages, _browsedAcks);
                }

                deliveryContext = _nonTransactedContext;
            }
            else
            {
                deliveryContext = _txnContext;
            }

            if (!unacked.isQueueDeleted())
            {
                // Redeliver the messages to the front of the queue
                deliveryContext.deliver(unacked.entry, true);
                // Deliver increments the message count but we have already deliverted this once so don't increment it again
                // this was because deliver did an increment changed this.
            }
            else
            {
                _log.warn(System.identityHashCode(this) + " Requested requeue of message(" + unacked.getMessage().debugIdentity()
                          + "):" + deliveryTag + " but no queue defined and no DeadLetter queue so DROPPING message.");
                // _log.error("Requested requeue of message:" + deliveryTag +
                // " but no queue defined using DeadLetter queue:" + getDeadLetterQueue());
                //
                // deliveryContext.deliver(unacked.message, getDeadLetterQueue(), false);
View Full Code Here

                }
            }
        }
        else
        {
            UnacknowledgedMessage msg;
            msg = unacknowledgedMessageMap.remove(deliveryTag);

            if (msg == null)
            {
                _log.info("Single ack on delivery tag " + deliveryTag + " not known for channel:" +
                          _channel.getChannelId());
                throw new AMQException("Single ack on delivery tag " + deliveryTag + " not known for channel:" +
                                       _channel.getChannelId());
            }

            if (!_browsedAcks.contains(deliveryTag))
            {
                if (_log.isDebugEnabled())
                {
                    _log.debug("Discarding message: " + msg.getMessage().getMessageId());
                }

                //Message has been ack so discard it. This will dequeue and decrement the reference.
                msg.discard(_storeContext);
            }
            else
            {
                _browsedAcks.remove(deliveryTag);
            }

            if (_log.isDebugEnabled())
            {
                _log.debug("Received non-multiple ack for messaging with delivery tag " + deliveryTag + " msg id " +
                           msg.getMessage().getMessageId());
            }
        }
    }
View Full Code Here

        int i = 1;
        for (long deliveryTag : deliveryTagSet)
        {
            assertTrue(deliveryTag == i);
            i++;
            UnacknowledgedMessage unackedMsg = map.get(deliveryTag);
            assertTrue(unackedMsg.getQueue() == _queue);
        }

        assertTrue(map.size() == msgCount);
        assertTrue(_messageStore.getMessageMetaDataMap().size() == msgCount);
    }
View Full Code Here

TOP

Related Classes of org.apache.qpid.server.ack.UnacknowledgedMessage

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.