Package org.codehaus.activemq.service

Examples of org.codehaus.activemq.service.Subscription


     * @param client
     * @param ack
     * @throws javax.jms.JMSException
     */
    public void acknowledgeMessage(BrokerClient client, MessageAck ack) throws JMSException {
        Subscription sub = (Subscription) activeSubscriptions.get(ack.getConsumerId());
        if (sub != null) {
            sub.messageConsumed(ack);
        }
    }
View Full Code Here


            sub.messageConsumed(ack);
        }
    }

    public void acknowledgeTransactedMessage(BrokerClient client, String transactionId, MessageAck ack) throws JMSException {
        Subscription sub = (Subscription) activeSubscriptions.get(ack.getConsumerId());
        if (sub != null) {
            sub.onAcknowledgeTransactedMessageBeforeCommit(ack);
        }
    }
View Full Code Here

            sub.onAcknowledgeTransactedMessageBeforeCommit(ack);
        }
    }

    public void redeliverMessage(BrokerClient client, MessageAck ack) throws JMSException {
        Subscription sub = (Subscription) activeSubscriptions.get(ack.getConsumerId());
        if (sub != null) {
            // lets find all the containers that contain this message
            for (Iterator iter = messageContainers.values().iterator(); iter.hasNext();) {
                MessageContainer container = (MessageContainer) iter.next();
                if (container.containsMessage(ack.getMessageIdentity())) {
                    sub.redeliverMessage(container, ack);
                   
                    // we only need to redeliver the message from one container
                    break;
                }
            }
View Full Code Here

    protected void doAddMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException {
        boolean shouldRecover = false;
        if (info.getConsumerName() != null && info.getClientId() != null) {
            subscriptionContainer.checkForDuplicateDurableSubscription(client, info);
        }
        Subscription subscription = subscriptionContainer.getSubscription(info.getConsumerId());
        if (subscription != null && subscription.isDurableTopic()) {
            //check the subscription hasn't changed
            if (!subscription.getDestination().equals(subscription.getDestination()) || !subscription.getSelector().equals(info.getSelector())) {
                subscriptionContainer.removeSubscription(info.getConsumerId());
                subscription.clear();
                subscription = subscriptionContainer.makeSubscription(dispatcher, info, createFilter(info));
            }
        }
        else {
            subscription = subscriptionContainer.makeSubscription(dispatcher, info, createFilter(info));
            shouldRecover = true;
        }
        subscription.setActiveConsumer(info);
        activeSubscriptions.put(info.getConsumerId(), subscription);

        dispatcher.addActiveSubscription(client, subscription);

        if (shouldRecover) {
            recoverSubscriptions(subscription);
        }

        // lets not make the subscription active until later
        // as we can't start dispatching until we've sent back the receipt
       
        // TODO we might wish to register a post-receipt action here
        // to perform the wakeup
        subscription.setActive(true);
        //dispatcher.wakeup(subscription);
    }
View Full Code Here

            doPoll();
            boolean dispatched = false;
            try {
                // our collection will not throw concurrent modification exception
                for (Iterator iter = subscriptions.keySet().iterator(); iter.hasNext();) {
                    Subscription sub = (Subscription) iter.next();
                    if (sub != null && sub.isReadyToDispatch()) {
                        dispatched = dispatchMessages(sub, dispatched);
                    }
                }
            }
            catch (JMSException jmsEx) {
View Full Code Here

     * @param client
     * @param info
     * @throws javax.jms.JMSException
     */
    public void removeMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException {
        Subscription sub = (Subscription) activeSubscriptions.remove(info.getConsumerId());
        if (sub != null) {
            sub.setActive(false);
            dispatcher.removeActiveSubscription(client, sub);
            subscriptionContainer.removeSubscription(info.getConsumerId());
            sub.clear();
        }
    }
View Full Code Here

            MessageContainer container = null;
            if (log.isDebugEnabled()) {
                log.debug("Dispaching to " + subscriptionContainer + " subscriptions with message: " + message);
            }
            for (Iterator i = subscriptionContainer.subscriptionIterator(); i.hasNext();) {
                Subscription sub = (Subscription) i.next();
                if (sub.isTarget(message) && (!sub.isDurableTopic() || message.getJMSDeliveryMode() == DeliveryMode.NON_PERSISTENT)) {
                    if (container == null) {
                        container = getContainer(message.getJMSDestination().toString());
                        container.addMessage(message);
                    }
                    sub.addMessage(container, message);
                }
            }
        }
    }
View Full Code Here

    public void addMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException {
        if (log.isDebugEnabled()) {
            log.debug("Adding consumer: " + info);
        }
        if (info.getDestination().isQueue()) {
            Subscription sub = subscriptionContainer.makeSubscription(dispatcher, info, createFilter(info));
            dispatcher.addActiveSubscription(client, sub);
            updateActiveSubscriptions(sub);

            // set active last in case we end up dispatching some messages
            // while recovering
            sub.setActive(true);
        }
    }
View Full Code Here

        if (log.isDebugEnabled()) {
            log.debug("Removing consumer: " + info);
        }
        if (info.getDestination() != null && info.getDestination().isQueue()) {
            synchronized (subscriptionMutex) {
                Subscription sub = (Subscription) subscriptionContainer.removeSubscription(info.getConsumerId());
                if (sub != null) {
                    sub.setActive(false);
                    sub.clear();//resets entries in the QueueMessageContainer
                    dispatcher.removeActiveSubscription(client, sub);
                    //need to do wildcards for this - but for now use exact matches
                    for (Iterator iter = messageContainers.values().iterator(); iter.hasNext();) {
                        QueueMessageContainer container = (QueueMessageContainer) iter.next();
                        //should change this for wild cards ...
                        if (container.getDestinationName().equals(sub.getDestination().getPhysicalName())) {
                            QueueList list = getSubscriptionList(container);
                            list.remove(sub);
                            if (list.isEmpty()) {
                                activeSubscriptions.remove(sub.getDestination().getPhysicalName());
                            }
                            list = getBrowserList(container);
                            list.remove(sub);
                            if (list.isEmpty()) {
                                browsers.remove(sub.getDestination().getPhysicalName());
                            }
                        }
                    }
                }
            }
View Full Code Here

     * @param client
     * @param ack
     * @throws javax.jms.JMSException
     */
    public void acknowledgeMessage(BrokerClient client, MessageAck ack) throws JMSException {
        Subscription sub = subscriptionContainer.getSubscription(ack.getConsumerId());
        if (sub != null) {
            sub.messageConsumed(ack);
        }
    }
View Full Code Here

TOP

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

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.