Package org.apache.qpid.server.exchange

Examples of org.apache.qpid.server.exchange.ExchangeRegistry


     */
    public void configure(ConfigurationPlugin config)
    {       
        _config = (SlowConsumerDetectionConfiguration) config;
        _listener = new ConfiguredQueueBindingListener(getVirtualHost().getName());
        final ExchangeRegistry exchangeRegistry = getVirtualHost().getExchangeRegistry();
        for (AMQShortString exchangeName : exchangeRegistry.getExchangeNames())
        {
            exchangeRegistry.getExchange(exchangeName).addBindingListener(_listener);
        }
    }
View Full Code Here




        public void message(final Session ssn, final MessageTransfer xfr)
        {
            ExchangeRegistry exchangeRegistry = getVirtualHost().getExchangeRegistry();

            Exchange exchange = exchangeRegistry.getExchange(_destination);

            // TODO - deal with exchange not existing

            DeliveryProperties delvProps = null;
            if(xfr.getHeader() != null && (delvProps = xfr.getHeader().getDeliveryProperties()) != null && delvProps.hasTtl() &&
View Full Code Here

    public void methodReceived(AMQStateManager stateManager, ExchangeDeclareBody body, int channelId) throws AMQException
    {
        AMQProtocolSession session = stateManager.getProtocolSession();
        VirtualHost virtualHost = session.getVirtualHost();
        ExchangeRegistry exchangeRegistry = virtualHost.getExchangeRegistry();
        ExchangeFactory exchangeFactory = virtualHost.getExchangeFactory();
        final AMQChannel channel = session.getChannel(channelId);
        if (channel == null)
        {
            throw body.getChannelNotFoundException(channelId);
        }

        final AMQShortString exchangeName = body.getExchange();
        if (_logger.isDebugEnabled())
        {
            _logger.debug("Request to declare exchange of type " + body.getType() + " with name " + exchangeName);
        }
       
        synchronized(exchangeRegistry)
        {
            Exchange exchange = exchangeRegistry.getExchange(exchangeName);

            if (exchange == null)
            {
                if(body.getPassive() && ((body.getType() == null) || body.getType().length() ==0))
                {
                    throw body.getChannelException(AMQConstant.NOT_FOUND, "Unknown exchange: " + exchangeName);
                }
                else if(exchangeName.startsWith("amq."))
                {
                    throw body.getConnectionException(AMQConstant.NOT_ALLOWED,
                              "Attempt to declare exchange: " + exchangeName +
                              " which begins with reserved prefix 'amq.'.");
                }
                else if(exchangeName.startsWith("qpid."))
                {
                    throw body.getConnectionException(AMQConstant.NOT_ALLOWED,
                                                      "Attempt to declare exchange: " + exchangeName +
                                                      " which begins with reserved prefix 'qpid.'.");
                }
                else
                {
                    try
                    {
                        exchange = exchangeFactory.createExchange(exchangeName == null ? null : exchangeName.intern(),
                                                                  body.getType() == null ? null : body.getType().intern(),
                                                                  body.getDurable(),
                                                                  body.getPassive(), body.getTicket());
                        exchangeRegistry.registerExchange(exchange);

                        if (exchange.isDurable())
                        {
                            virtualHost.getMessageStore().createExchange(exchange);
                        }
View Full Code Here

            _session.messageFlow(subName, MessageCreditUnit.BYTE, 0xFFFFFFFF);
            _session.sync();
            // todo check exception


            ExchangeRegistry exchangeRegistry = getVirtualHost().getExchangeRegistry();

            Exchange exchange = exchangeRegistry.getExchange(_destination);

            // TODO - check null

            exchange.addBindingListener(this);
View Full Code Here

        {
            assert session instanceof ServerSession;

            session.setSessionListener(this);

            ExchangeRegistry exchangeRegistry = getVirtualHost().getExchangeRegistry();

            Exchange exchange = exchangeRegistry.getExchange(_source);

            // TODO - Check null

            final HashMap<String, Object> options = new HashMap<String, Object>();
            options.put("qpid.trace.exclude", _link.getFederationTag());
View Full Code Here

    public void methodReceived(AMQStateManager stateManager, QueueDeclareBody body, int channelId) throws AMQException
    {
        final AMQProtocolSession protocolConnection = stateManager.getProtocolSession();
        final AMQSessionModel session = protocolConnection.getChannel(channelId);
        VirtualHost virtualHost = protocolConnection.getVirtualHost();
        ExchangeRegistry exchangeRegistry = virtualHost.getExchangeRegistry();
        QueueRegistry queueRegistry = virtualHost.getQueueRegistry();
        DurableConfigurationStore store = virtualHost.getDurableConfigurationStore();

        final AMQShortString queueName;

        // if we aren't given a queue name, we create one which we return to the client
        if ((body.getQueue() == null) || (body.getQueue().length() == 0))
        {
            queueName = createName();
        }
        else
        {
            queueName = body.getQueue().intern();
        }

        AMQQueue queue;
       
        //TODO: do we need to check that the queue already exists with exactly the same "configuration"?

        synchronized (queueRegistry)
        {
            queue = queueRegistry.getQueue(queueName);

            AMQSessionModel owningSession = null;

            if (queue != null)
            {
                owningSession = queue.getExclusiveOwningSession();
            }

            if (queue == null)
            {
                if (body.getPassive())
                {
                    String msg = "Queue: " + queueName + " not found on VirtualHost(" + virtualHost + ").";
                    throw body.getChannelException(AMQConstant.NOT_FOUND, msg);
                }
                else
                {
                    queue = createQueue(queueName, body, virtualHost, protocolConnection);
                    queue.setPrincipalHolder(protocolConnection);
                    if (queue.isDurable() && !queue.isAutoDelete())
                    {
                        store.createQueue(queue, body.getArguments());
                    }
                    if(body.getAutoDelete())
                    {
                        queue.setDeleteOnNoConsumers(true);
                    }
                    queueRegistry.registerQueue(queue);
                    if (body.getExclusive())
                    {
                        queue.setExclusiveOwningSession(protocolConnection.getChannel(channelId));
                        queue.setPrincipalHolder(protocolConnection);

                        if(!body.getDurable())
                        {
                            final AMQQueue q = queue;
                            final AMQProtocolSession.Task sessionCloseTask = new AMQProtocolSession.Task()
                            {
                                public void doTask(AMQProtocolSession session) throws AMQException
                                {
                                    q.setExclusiveOwningSession(null);
                                }
                            };
                            protocolConnection.addSessionCloseTask(sessionCloseTask);
                            queue.addQueueDeleteTask(new AMQQueue.Task() {
                                public void doTask(AMQQueue queue) throws AMQException
                                {
                                    protocolConnection.removeSessionCloseTask(sessionCloseTask);
                                }
                            });
                        }
                    }
                    if (autoRegister)
                    {
                        Exchange defaultExchange = exchangeRegistry.getDefaultExchange();

                        virtualHost.getBindingFactory().addBinding(String.valueOf(queueName), queue, defaultExchange, Collections.EMPTY_MAP);
                        _logger.info("Queue " + queueName + " bound to default exchange(" + defaultExchange.getNameShortString() + ")");
                    }
                }
View Full Code Here



        public void message(final Session ssn, final MessageTransfer xfr)
        {
            ExchangeRegistry exchangeRegistry = getVirtualHost().getExchangeRegistry();

            Exchange exchange = exchangeRegistry.getExchange(_destination);

            // TODO - deal with exchange not existing

            DeliveryProperties delvProps = null;
            if(xfr.getHeader() != null && (delvProps = xfr.getHeader().get(DeliveryProperties.class)) != null && delvProps.hasTtl() && !delvProps.hasExpiration())
View Full Code Here

            _session.messageFlow(subName, MessageCreditUnit.BYTE, 0xFFFFFFFF);
            _session.sync();
            // todo check exception


            ExchangeRegistry exchangeRegistry = getVirtualHost().getExchangeRegistry();

            Exchange exchange = exchangeRegistry.getExchange(_destination);

            // TODO - check null

            exchange.addBindingListener(this);
View Full Code Here

        {
            assert session instanceof ServerSession;

            session.setSessionListener(this);

            ExchangeRegistry exchangeRegistry = getVirtualHost().getExchangeRegistry();

            Exchange exchange = exchangeRegistry.getExchange(_source);

            // TODO - Check null

            final HashMap<String, Object> options = new HashMap<String, Object>();
            options.put("qpid.trace.exclude", _link.getFederationTag());
View Full Code Here

    {
        int origExchangeCount = getVirtualHost().getExchangeRegistry().getExchangeNames().size();

        createExchange(DirectExchange.TYPE, directExchangeName, true);
      
        ExchangeRegistry exchangeRegistry = getVirtualHost().getExchangeRegistry();
        assertEquals("Incorrect number of exchanges registered before recovery",
                origExchangeCount + 1,  exchangeRegistry.getExchangeNames().size());

        reloadVirtualHost();
       
        exchangeRegistry = getVirtualHost().getExchangeRegistry();
        assertEquals("Incorrect number of exchanges registered after first recovery",
                origExchangeCount + 1,  exchangeRegistry.getExchangeNames().size());
       
        //test that removing the exchange means it is not recovered next time
        getVirtualHost().getMessageStore().removeExchange(exchangeRegistry.getExchange(directExchangeName));

        reloadVirtualHost();
       
        exchangeRegistry = getVirtualHost().getExchangeRegistry();
        assertEquals("Incorrect number of exchanges registered after second recovery",
                origExchangeCount,  exchangeRegistry.getExchangeNames().size());
        assertNull("Durable exchange was not removed:" + directExchangeName,
                exchangeRegistry.getExchange(directExchangeName));
    }
View Full Code Here

TOP

Related Classes of org.apache.qpid.server.exchange.ExchangeRegistry

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.