Package org.codehaus.activemq.service

Examples of org.codehaus.activemq.service.QueueListEntry


    }

    public synchronized void delete(MessageIdentity messageID, MessageAck ack) throws JMSException {
        boolean found = false;
        QueueListEntry entry = deliveredMessages.getFirstEntry();
        while (entry != null) {
            MessageIdentity identity = (MessageIdentity) entry.getElement();
            if (messageID.equals(identity)) {
                deliveredMessages.remove(entry);

                // lets used the cached identity as it has the sequence number
                // attached to it
                messageStore.removeMessage(identity, ack);
                found = true;
                break;
            }
            entry = deliveredMessages.getNextEntry(entry);
        }
        if (!found) {
            // maybe the messages have not been delivered yet
            // as we are recovering from a previous transaction log
            entry = messagesToBeDelivered.getFirstEntry();
            while (entry != null) {
                MessageIdentity identity = (MessageIdentity) entry.getElement();
                if (messageID.equals(identity)) {
                    messagesToBeDelivered.remove(entry);

                    // lets used the cached identity as it has the sequence number
                    // attached to it
View Full Code Here


        else {
            Map lastMessagePointersPerContainer = new HashMap();

            //remove up to this message
            boolean found = false;
            QueueListEntry queueEntry = messagePtrs.getFirstEntry();
            while (queueEntry != null) {
                MessagePointer pointer = (MessagePointer) queueEntry.getElement();

                messagePtrs.remove(queueEntry);
                lastMessagePointersPerContainer.put(pointer.getContainer(), pointer);
                unconsumedMessagesDispatched.decrement();
View Full Code Here

     * Called when the Subscription is discarded
     *
     * @throws JMSException
     */
    public synchronized void clear() throws JMSException {
        QueueListEntry entry = messagePtrs.getFirstEntry();
        while (entry != null) {
            MessagePointer pointer = (MessagePointer) entry.getElement();
            pointer.clear();
            entry = messagePtrs.getNextEntry(entry);
        }
        messagePtrs.clear();
    }
View Full Code Here

    /**
     * Called when an active subscriber has closed. This resets all MessagePtrs
     */
    public synchronized void reset() throws JMSException {
        QueueListEntry entry = messagePtrs.getFirstEntry();
        while (entry != null) {
            MessagePointer pointer = (MessagePointer) entry.getElement();
            if (pointer.isDispatched()) {
                pointer.reset();
            }
            else {
                break;
View Full Code Here

    public synchronized void onAcknowledgeTransactedMessageBeforeCommit(MessageAck ack) throws JMSException {
        doMessageConsume(ack, false);
    }

    public synchronized void redeliverMessage(MessageContainer container, MessageAck ack) throws JMSException {
        QueueListEntry entry = messagePtrs.getFirstEntry();
        while (entry != null) {
            MessagePointer pointer = (MessagePointer) entry.getElement();
            if (pointer.getMessageIdentity().getMessageID().equals(ack.getMessageID())) {
                break;
            }
            entry = messagePtrs.getNextEntry(entry);
        }
        if (entry != null) {
            MessagePointer pointer = (MessagePointer) entry.getElement();
            if (pointer != null) {
                unconsumedMessagesDispatched.increment();

                //System.out.println("Incremented unconsumed count to: " + unconsumedMessagesDispatched.get());
View Full Code Here

    public synchronized ActiveMQMessage[] getMessagesToDispatch() throws JMSException {
        if (usePrefetch) {
            return getMessagesWithPrefetch();
        }
        List tmpList = new ArrayList();
        QueueListEntry entry = messagePtrs.getFirstEntry();
        while (entry != null) {
            MessagePointer pointer = (MessagePointer) entry.getElement();
            if (!pointer.isDispatched()) {
                ActiveMQMessage msg = pointer.getContainer().getMessage(pointer.getMessageIdentity());
                if (msg != null) {
                    pointer.setDispatched(true);
                    tmpList.add(msg);
                }
                else {
                    //the message is probably expired
                    log.info("Message probably expired: " + msg);
                    QueueListEntry discarded = entry;
                    entry = messagePtrs.getPrevEntry(discarded);
                    messagePtrs.remove(discarded);
                }
            }
            entry = messagePtrs.getNextEntry(entry);
View Full Code Here

        return (ActiveMQMessage[]) tmpList.toArray(messages);
    }

    protected synchronized ActiveMQMessage[] getMessagesWithPrefetch() throws JMSException {
        List tmpList = new ArrayList();
        QueueListEntry entry = messagePtrs.getFirstEntry();
        int count = 0;
        int maxNumberToDispatch = prefetchLimit - unconsumedMessagesDispatched.get();

        while (entry != null && count < maxNumberToDispatch) {
            MessagePointer pointer = (MessagePointer) entry.getElement();
            if (!pointer.isDispatched()) {
                ActiveMQMessage msg = pointer.getContainer().getMessage(pointer.getMessageIdentity());
                if (msg != null) {
                    pointer.setDispatched(true);
                    tmpList.add(msg);
                    unconsumedMessagesDispatched.increment();
                    count++;
                }
                else {
                    //the message is probably expired
                    log.info("Message probably expired: " + msg);
                    QueueListEntry discarded = entry;
                    entry = messagePtrs.getPrevEntry(discarded);
                    messagePtrs.remove(discarded);
                }
            }
            entry = messagePtrs.getNextEntry(entry);
View Full Code Here

     */
    protected synchronized void doMessageConsume(MessageAck ack, boolean remove) throws JMSException {
        //remove up to this message
        int count = 0;
        boolean found = false;
        QueueListEntry entry = messagePtrs.getFirstEntry();
        while (entry != null) {
            MessagePointer pointer = (MessagePointer) entry.getElement();
            if (remove) {
                messagePtrs.remove(entry);
                if (ack.isMessageRead() && !browser) {
                    pointer.delete(ack);//delete message from the container (if possible)
                }
View Full Code Here

        if (subList != null && subList.size() > 0) {
            do {
                boolean dispatched = false;
                msg = container.poll();
                if (msg != null) {
                    QueueListEntry entry = subList.getFirstEntry();
                    boolean targeted = false;
                    while (entry != null) {
                        SubscriptionImpl sub = (SubscriptionImpl) entry.getElement();
                        if (sub.isTarget(msg)) {
                            targeted = true;
                            if (!sub.isAtPrefetchLimit()) {
                                sub.addMessage(container, msg);
                                dispatched = true;
View Full Code Here

        if (subList != null && subList.size() > 0) {
            do {
                boolean dispatched = false;
                msg = container.poll();
                if (msg != null) {
                    QueueListEntry entry = subList.getFirstEntry();
                    boolean targeted = false;
                    while (entry != null) {
                        SubscriptionImpl sub = (SubscriptionImpl) entry.getElement();
                        if (sub.isTarget(msg)) {
                            targeted = true;
                            if (msg.isMessagePart()){
                                SubscriptionImpl sameTarget = (SubscriptionImpl)messagePartSubscribers.get(msg.getParentMessageID());
                                if (sameTarget == null){
View Full Code Here

TOP

Related Classes of org.codehaus.activemq.service.QueueListEntry

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.