com.orbitz.consul.model.kv.Value.getSession()方法的使用及代码示例

x33g5p2x  于2022-02-01 转载在 其他  
字(5.4k)|赞(0)|评价(0)|浏览(76)

本文整理了Java中com.orbitz.consul.model.kv.Value.getSession()方法的一些代码示例,展示了Value.getSession()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Value.getSession()方法的具体详情如下:
包路径:com.orbitz.consul.model.kv.Value
类名称:Value
方法名:getSession

Value.getSession介绍

暂无

代码示例

代码示例来源:origin: soabase/exhibitor

public void releaseLock() {
    try {
      KeyValueClient kv = consul.keyValueClient();
      Optional<Value> value = kv.getValue(path);

      if (value.isPresent()) {
        Optional<String> session = value.get().getSession();
        if (session.isPresent()) {
          kv.releaseLock(path, session.get());
        }
      }
    } finally {
      destroySession();
    }
  }
}

代码示例来源:origin: rickfast/consul-client

public boolean releaseLockForService(final String serviceName) {
  final String key = getServiceKey(serviceName);
  KeyValueClient kv = client.keyValueClient();
  Optional<Value> value = kv.getValue(key);
  if(value.isPresent() && value.get().getSession().isPresent()) {
    return kv.releaseLock(key, value.get().getSession().get());
  } else {
    return true;
  }
}

代码示例来源:origin: rickfast/consul-client

public Optional<String> getLeaderInfoForService(final String serviceName) {
  String key = getServiceKey(serviceName);
  Optional<Value> value = client.keyValueClient().getValue(key);
  return value.flatMap(val -> {
    if(val.getSession().isPresent()) {
      return val.getValueAsString();
    }
    return Optional.empty();
  });
}

代码示例来源:origin: couchbase/couchbase-elasticsearch-connector

private void bind() throws InterruptedException, EndpointAlreadyInUseException {
  while (!closed()) {
   LOGGER.info("Attempting to binding to RPC endpoint document {}", endpointKey);

   final boolean acquired = kv.acquireLock(endpointKey, "{}", sessionId);
   if (acquired) {
    LOGGER.info("Successfully bound to RPC endpoint document {}", endpointKey);
    return;
   }

   final Optional<ConsulResponse<Value>> existing = kv.getConsulResponseWithValue(endpointKey);
   if (existing.isPresent()) {
    // somebody else has acquired the lock
    final String lockSession = existing.get().getResponse().getSession().orElse(null);
    throw new EndpointAlreadyInUseException(
      "Failed to lock RPC endpoint document " + endpointKey + " ; already locked by session " + lockSession);
   }

   LOGGER.info("Endpoint lock acquisition failed; will retry after delay.");
   SECONDS.sleep(1);
  }
 }
}

代码示例来源:origin: org.apache.camel/camel-consul

@Override
public void onComplete(ConsulResponse<Optional<Value>> consulResponse) {
  if (isStarting() || isStarted()) {
    Optional<Value> value = consulResponse.getResponse();
    if (value.isPresent()) {
      Optional<String> sid = value.get().getSession();
      if (!sid.isPresent()) {
        // If the key is not held by any session, try acquire a
        // lock (become leader)
        boolean lock = acquireLock();
        LOGGER.debug("Try to acquire lock on path '{}' with id '{}', result '{}'", path, sessionId.get(), lock);
        localMember.setMaster(lock);
      } else {
        boolean master = sid.get().equals(sessionId.get());
        if (!master) {
          LOGGER.debug("Path {} is held by session {}, local session is {}", path, sid.get(), sessionId.get());
        }
        localMember.setMaster(sid.get().equals(sessionId.get()));
      }
    }
    index.set(consulResponse.getIndex());
    watch();
  }
}

代码示例来源:origin: org.apache.camel/camel-consul

@Override
public void onComplete(ConsulResponse<Optional<Value>> consulResponse) {
  if (isRunAllowed()) {
    Optional<Value> value = consulResponse.getResponse();
    if (value.isPresent()) {
      Optional<String> sid = value.get().getSession();
      if (sid.isPresent() && ObjectHelper.isNotEmpty(sid.get())) {
        // If the key is not held by any session, try acquire a
        // lock (become leader)
        LOGGER.debug("Try to take leadership ...");
        setLeader(keyValueClient.acquireLock(servicePath, sessionId));
      } else if (!sessionId.equals(sid) && leader.get()) {
        // Looks like I've lost leadership
        setLeader(false);
      }
    }
    index.set(consulResponse.getIndex());
    run();
  }
}

代码示例来源:origin: org.apache.camel/camel-consul

protected void onValue(Value value) {
  final Exchange exchange = endpoint.createExchange();
  final Message message = exchange.getIn();
  message.setHeader(ConsulConstants.CONSUL_KEY, value.getKey());
  message.setHeader(ConsulConstants.CONSUL_RESULT, true);
  message.setHeader(ConsulConstants.CONSUL_FLAGS, value.getFlags());
  message.setHeader(ConsulConstants.CONSUL_CREATE_INDEX, value.getCreateIndex());
  message.setHeader(ConsulConstants.CONSUL_LOCK_INDEX, value.getLockIndex());
  message.setHeader(ConsulConstants.CONSUL_MODIFY_INDEX, value.getModifyIndex());
  if (value.getSession().isPresent()) {
    message.setHeader(ConsulConstants.CONSUL_SESSION, value.getSession().get());
  }
  message.setBody(configuration.isValueAsString() ? value.getValueAsString().orElse(null) : value.getValue().orElse(null));
  try {
    getProcessor().process(exchange);
  } catch (Exception e) {
    getExceptionHandler().handleException("Error processing exchange", exchange, e);
  }
}

代码示例来源:origin: rickfast/consul-client

/**
 * Fill a builder with attribute values from the provided {@code Value} instance.
 * Regular attribute values will be replaced with those from the given instance.
 * Absent optional values will not replace present values.
 * @param instance The instance from which to copy values
 * @return {@code this} builder for use in a chained invocation
 */
public final Builder from(Value instance) {
 Preconditions.checkNotNull(instance, "instance");
 createIndex(instance.getCreateIndex());
 modifyIndex(instance.getModifyIndex());
 lockIndex(instance.getLockIndex());
 key(instance.getKey());
 flags(instance.getFlags());
 Optional<String> valueOptional = instance.getValue();
 if (valueOptional.isPresent()) {
  value(valueOptional);
 }
 Optional<String> sessionOptional = instance.getSession();
 if (sessionOptional.isPresent()) {
  session(sessionOptional);
 }
 return this;
}

相关文章