Package org.apache.activemq.network

Examples of org.apache.activemq.network.DiscoveryNetworkConnector


        tConnector.setUri(new URI(uri1));
        tConnector.setName(brokerName + ".transportConnector");
        brokerService.addConnector(tConnector);

        if (uri2 != null) {
            final NetworkConnector nc = new DiscoveryNetworkConnector(new URI("static:" + uri2));
            nc.setBridgeTempDestinations(true);
            nc.setBrokerName(brokerName);
            brokerService.addNetworkConnector(nc);
        }

        return brokerService;
View Full Code Here


    private void runTest(final long taskRunnerDelay, long timeout)
            throws Exception {
        // Add a network connector to the local broker that will create a bridge
        // to the remote broker.
        DiscoveryNetworkConnector dnc = new DiscoveryNetworkConnector();
        SimpleDiscoveryAgent da = new SimpleDiscoveryAgent();
        da.setServices(remoteBroker.getTransportConnectors().get(0).getPublishableConnectString());
        dnc.setDiscoveryAgent(da);
        localBroker.addNetworkConnector(dnc);

        // Before starting the local broker, intercept the task runner factory
        // so that the
        // local VMTransport dispatcher is artificially delayed.
View Full Code Here

        // actually attempt to start bridges. Post-patch, only one thread is
        // allowed to start the bridge.
        final CountDownLatch attemptLatch = new CountDownLatch(2);
        final CountDownLatch createLatch = new CountDownLatch(2);

        DiscoveryNetworkConnector nc = new DiscoveryNetworkConnector() {
            @Override
            public void onServiceAdd(DiscoveryEvent event) {
                // Pre-and-post patch, two threads attempt to establish a bridge
                // to the same remote broker.
                attemptLatch.countDown();
                super.onServiceAdd(event);
            }

            @Override
            protected NetworkBridge createBridge(Transport localTransport,
                    Transport remoteTransport, final DiscoveryEvent event) {
                // Pre-patch, the two threads are allowed to create the bridge.
                // Post-patch, only the first thread is allowed. Wait a
                // reasonable delay once both attempts are detected to allow
                // the two bridge creations to occur concurrently (pre-patch).
                // Post-patch, the wait will timeout and allow the first (and
                // only) bridge creation to occur.
                try {
                    attemptLatch.await();
                    createLatch.countDown();
                    createLatch.await(ATTEMPT_TO_CREATE_DELAY,
                            TimeUnit.MILLISECONDS);
                    return super.createBridge(localTransport, remoteTransport,
                            event);
                } catch (InterruptedException e) {
                    Thread.interrupted();
                    return null;
                }
            }
        };

        nc.setDiscoveryAgent(new DiscoveryAgent() {
            TaskRunnerFactory taskRunner = new TaskRunnerFactory();
            DiscoveryListener listener;

            @Override
            public void start() throws Exception {
                taskRunner.init();
                taskRunner.execute(new Runnable() {
                    @Override
                    public void run() {
                        listener.onServiceAdd(new DiscoveryEvent(broker2
                                .getVmConnectorURI().toString()));
                    }
                });
                taskRunner.execute(new Runnable() {
                    @Override
                    public void run() {
                        listener.onServiceAdd(new DiscoveryEvent(broker2
                                .getVmConnectorURI().toString()));
                    }
                });
            }

            @Override
            public void stop() throws Exception {
                taskRunner.shutdown();
            }

            @Override
            public void setDiscoveryListener(DiscoveryListener listener) {
                this.listener = listener;
            }

            @Override
            public void registerService(String name) throws IOException {
            }

            @Override
            public void serviceFailed(DiscoveryEvent event) throws IOException {
                listener.onServiceRemove(event);
            }
        });

        broker1.addNetworkConnector(nc);
        nc.start();

        // Wait for the bridge to be formed by the first attempt.
        waitForBridge(broker1.getBrokerName(), broker2.getBrokerName(),
                MAX_TEST_TIME, TimeUnit.MILLISECONDS);

        // Pre-patch, the second bridge creation attempt fails and removes the
        // first (successful) bridge creation attempt from the
        // list of active bridges. Post-patch, the second bridge creation
        // attempt is prevented, so the first bridge creation attempt
        // remains "active". This assertion is expected to fail pre-patch and
        // pass post-patch.
        Assert.assertFalse(nc.activeBridges().isEmpty());
    }
View Full Code Here

        da.setServices(new URI[] { broker2.getVmConnectorURI() });

        final CountDownLatch attemptLatch = new CountDownLatch(3);
        final CountDownLatch removedLatch = new CountDownLatch(1);

        DiscoveryNetworkConnector nc = new DiscoveryNetworkConnector() {
            @Override
            public void onServiceAdd(DiscoveryEvent event) {
                attemptLatch.countDown();
                super.onServiceAdd(event);
            }

            @Override
            public void onServiceRemove(DiscoveryEvent event) {
                super.onServiceRemove(event);
                removedLatch.countDown();
            }

            @Override
            protected NetworkBridge createBridge(Transport localTransport,
                    Transport remoteTransport, final DiscoveryEvent event) {
                final NetworkBridge next = super.createBridge(localTransport,
                        remoteTransport, event);
                return new NetworkBridge() {

                    @Override
                    public void start() throws Exception {
                        next.start();
                        // Delay returning until the failed service has been
                        // removed.
                        removedLatch.await();
                    }

                    @Override
                    public void stop() throws Exception {
                        next.stop();
                    }

                    @Override
                    public void serviceRemoteException(Throwable error) {
                        next.serviceRemoteException(error);
                    }

                    @Override
                    public void serviceLocalException(Throwable error) {
                        next.serviceLocalException(error);
                    }

                    @Override
                    public void setNetworkBridgeListener(
                            NetworkBridgeListener listener) {
                        next.setNetworkBridgeListener(listener);
                    }

                    @Override
                    public String getRemoteAddress() {
                        return next.getRemoteAddress();
                    }

                    @Override
                    public String getRemoteBrokerName() {
                        return next.getRemoteBrokerName();
                    }

                    @Override
                    public String getLocalAddress() {
                        return next.getLocalAddress();
                    }

                    @Override
                    public String getLocalBrokerName() {
                        return next.getLocalBrokerName();
                    }

                    @Override
                    public long getEnqueueCounter() {
                        return next.getEnqueueCounter();
                    }

                    @Override
                    public long getDequeueCounter() {
                        return next.getDequeueCounter();
                    }

                    @Override
                    public void setMbeanObjectName(ObjectName objectName) {
                        next.setMbeanObjectName(objectName);
                    }

                    @Override
                    public ObjectName getMbeanObjectName() {
                        return next.getMbeanObjectName();
                    }
                };
            }
        };
        nc.setDiscoveryAgent(da);

        broker1.addNetworkConnector(nc);
        nc.start();

        // All bridge attempts should fail, so the attempt latch should get
        // triggered. However, because of the race condition, the first attempt
        // is considered successful and causes further attempts to stop.
        // Therefore, this wait will time out and cause the test to fail.
View Full Code Here

    protected NetworkConnector bridgeBrokers(BrokerService localBroker, BrokerService remoteBroker, boolean dynamicOnly, int networkTTL, boolean conduit, boolean failover) throws Exception {
        String networkDisoveryUrlString = useStaticDiscovery ?
                "static:(" + remoteBroker.getTransportConnectors().get(0).getPublishableConnectString() + ")?useExponentialBackOff=false" :
                "multicast://default?group=TESTERIC&useLocalHost=false";

        DiscoveryNetworkConnector connector = new DiscoveryNetworkConnector(new URI(networkDisoveryUrlString));
        connector.setDynamicOnly(dynamicOnly);
        connector.setNetworkTTL(networkTTL);
        connector.setDuplex(useDuplexNetworkBridge);
        maxSetupTime = 2000;
        if (!useStaticDiscovery) {
            List<TransportConnector> transportConnectors = remoteBroker.getTransportConnectors();
            if (!transportConnectors.isEmpty()) {
            TransportConnector mCastTrpConnector = ((TransportConnector)transportConnectors.get(0));
View Full Code Here

    protected NetworkConnector bridgeBrokers(BrokerService localBroker, BrokerService remoteBroker, boolean dynamicOnly, int networkTTL, boolean conduit, boolean failover) throws Exception {
        List<TransportConnector> transportConnectors = remoteBroker.getTransportConnectors();
        URI remoteURI;
        if (!transportConnectors.isEmpty()) {
            remoteURI = transportConnectors.get(0).getConnectUri();
            NetworkConnector connector = new DiscoveryNetworkConnector(new URI("static:" + remoteURI));
            connector.setName(localBroker.getBrokerName() + remoteBroker.getBrokerName());
            localBroker.addNetworkConnector(connector);
            maxSetupTime = 2000;
            return connector;
        } else {
            throw new Exception("Remote broker has no registered connectors.");
View Full Code Here

        assertTrue("got bridge to C in 10 seconds", waitForBridgeFormation(brokerA, 1, 7, maxWaitMillis));
    }

    private void bridgeBroker(BrokerService localBroker, String remoteURI) throws Exception {
        String uri = "static:(" + remoteURI + ")";
        NetworkConnector connector = new DiscoveryNetworkConnector(new URI(uri));
        connector.setName("bridge-" + bridgeCount++);
        localBroker.addNetworkConnector(connector);
    }
View Full Code Here

            remoteURI = ((TransportConnector)transportConnectors.get(0)).getConnectUri();
            if (useSocketProxy) {
                socketProxy = new SocketProxy(remoteURI);
                remoteURI = socketProxy.getUrl();
            }
            DiscoveryNetworkConnector connector = new DiscoveryNetworkConnector(new URI("static:(" + remoteURI
                    + "?wireFormat.maxInactivityDuration=" + inactiveDuration + "&wireFormat.maxInactivityDurationInitalDelay=" + inactiveDuration + ")?useExponentialBackOff=false"));
            connector.setDynamicOnly(dynamicOnly);
            connector.setNetworkTTL(networkTTL);
            localBroker.addNetworkConnector(connector);
            maxSetupTime = 2000;
            if (useDuplexNetworkBridge) {
                connector.setDuplex(true);
            }
            return connector;
        } else {
            throw new Exception("Remote broker has no registered connectors.");
        }
View Full Code Here

    protected NetworkConnector bridgeBrokers(BrokerService localBroker, BrokerService remoteBroker, boolean dynamicOnly, int networkTTL, boolean conduit) throws Exception {
        List transportConnectors = remoteBroker.getTransportConnectors();
        URI remoteURI;
        if (!transportConnectors.isEmpty()) {
            remoteURI = ((TransportConnector)transportConnectors.get(0)).getConnectUri();
            NetworkConnector connector = new DiscoveryNetworkConnector(new URI("static:" + remoteURI));
            connector.setDynamicOnly(dynamicOnly);
            connector.setNetworkTTL(networkTTL);
            connector.setConduitSubscriptions(conduit);
            localBroker.addNetworkConnector(connector);
            maxSetupTime = 2000;
            return connector;
        } else {
            throw new Exception("Remote broker has no registered connectors.");
View Full Code Here

     *
     * @return the newly created and added network connector
     * @throws Exception
     */
    public NetworkConnector addNetworkConnector(URI discoveryAddress) throws Exception {
        NetworkConnector connector = new DiscoveryNetworkConnector(discoveryAddress);
        return addNetworkConnector(connector);
    }
View Full Code Here

TOP

Related Classes of org.apache.activemq.network.DiscoveryNetworkConnector

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.