Пример #1
0
void Connection::open(const Url& url, const ConnectionSettings& settings) {
    if (url.empty())
        throw Exception(QPID_MSG("Attempt to open URL with no addresses."));
    Url::const_iterator i = url.begin();
    do {
        const Address& addr = *i;
        i++;
        try {
            ConnectionSettings cs(settings);
            if (addr.protocol.size()) cs.protocol = addr.protocol;
            cs.host = addr.host;
            cs.port = addr.port;
            open(cs);
            break;
        }
        catch (const Exception& /*e*/) {
            if (i == url.end()) throw;
        }
    } while (i != url.end());
}
Пример #2
0
void Backup::setBrokerUrl(const Url& brokers) {
    if (brokers.empty()) return;
    Mutex::ScopedLock l(lock);
    if (stopped) return;
    if (haBroker.getStatus() == JOINING) statusCheck->setUrl(brokers);
    if (!link) {                // Not yet initialized
        QPID_LOG(info, logPrefix << "Connecting to cluster, broker URL: " << brokers);
        string protocol = brokers[0].protocol.empty() ? "tcp" : brokers[0].protocol;
        types::Uuid uuid(true);
        link = broker.getLinks().declare(
            broker::QPID_NAME_PREFIX + string("ha.link.") + uuid.str(),
            brokers[0].host, brokers[0].port, protocol,
            false,                  // durable
            settings.mechanism, settings.username, settings.password,
            false).first;     // no amq.failover - don't want to use client URL.
        replicator = BrokerReplicator::create(haBroker, link);
        broker.getExchanges().registerExchange(replicator);
    }
    link->setUrl(brokers);
}