@Override public int compareTo(MessageId o) { return messageId.compareTo(o); } }
/** * Since the ack are delayed, we need to do some best-effort duplicate check to discard messages that are being * resent after a disconnection and for which the user has already sent an acknowlowdgement. */ public boolean isDuplicate(MessageId messageId) { if (messageId.compareTo(lastCumulativeAck) <= 0) { // Already included in a cumulative ack return true; } else { return pendingIndividualAcks.contains(messageId); } }
public CompletableFuture<Boolean> hasMessageAvailableAsync() { final CompletableFuture<Boolean> booleanFuture = new CompletableFuture<>(); if (lastMessageIdInBroker.compareTo(lastDequeuedMessage) > 0 && ((MessageIdImpl)lastMessageIdInBroker).getEntryId() != -1) { booleanFuture.complete(true); } else { getLastMessageIdAsync().thenAccept(messageId -> { lastMessageIdInBroker = messageId; if (lastMessageIdInBroker.compareTo(lastDequeuedMessage) > 0 && ((MessageIdImpl)lastMessageIdInBroker).getEntryId() != -1) { booleanFuture.complete(true); } else { booleanFuture.complete(false); } }).exceptionally(e -> { log.error("[{}][{}] Failed getLastMessageId command", topic, subscription); booleanFuture.completeExceptionally(e.getCause()); return null; }); } return booleanFuture; }
public int removeMessagesTill(MessageId msgId) { writeLock.lock(); try { int removed = 0; Iterator<MessageId> iterator = messageIdPartitionMap.keySet().iterator(); while (iterator.hasNext()) { MessageId messageId = iterator.next(); if (messageId.compareTo(msgId) <= 0) { ConcurrentOpenHashSet<MessageId> exist = messageIdPartitionMap.get(messageId); if (exist != null) { exist.remove(messageId); } iterator.remove(); removed ++; } } return removed; } finally { writeLock.unlock(); } }
public boolean hasMessageAvailable() throws PulsarClientException { try { if (lastMessageIdInBroker.compareTo(lastDequeuedMessage) > 0 && ((MessageIdImpl)lastMessageIdInBroker).getEntryId() != -1) { return true; } return hasMessageAvailableAsync().get(); } catch (ExecutionException | InterruptedException e) { throw new PulsarClientException(e); } }
@Override public int compareTo(MessageId o) { return messageId.compareTo(o); } }
/** * Since the ack are delayed, we need to do some best-effort duplicate check to discard messages that are being * resent after a disconnection and for which the user has already sent an acknowlowdgement. */ public boolean isDuplicate(MessageId messageId) { if (messageId.compareTo(lastCumulativeAck) <= 0) { // Already included in a cumulative ack return true; } else { return pendingIndividualAcks.contains(messageId); } }
public int removeMessagesTill(MessageId msgId) { readLock.lock(); try { int currentSetRemovedMsgCount = currentSet.removeIf(m -> (m.compareTo(msgId) <= 0)); int oldSetRemovedMsgCount = oldOpenSet.removeIf(m -> (m.compareTo(msgId) <= 0)); return currentSetRemovedMsgCount + oldSetRemovedMsgCount; } finally { readLock.unlock(); } }
public CompletableFuture<Boolean> hasMessageAvailableAsync() { final CompletableFuture<Boolean> booleanFuture = new CompletableFuture<>(); if (lastMessageIdInBroker.compareTo(lastDequeuedMessage) > 0 && ((MessageIdImpl)lastMessageIdInBroker).getEntryId() != -1) { booleanFuture.complete(true); } else { getLastMessageIdAsync().thenAccept(messageId -> { lastMessageIdInBroker = messageId; if (lastMessageIdInBroker.compareTo(lastDequeuedMessage) > 0 && ((MessageIdImpl)lastMessageIdInBroker).getEntryId() != -1) { booleanFuture.complete(true); } else { booleanFuture.complete(false); } }).exceptionally(e -> { log.error("[{}][{}] Failed getLastMessageId command", topic, subscription); booleanFuture.completeExceptionally(e.getCause()); return null; }); } return booleanFuture; }
public boolean hasMessageAvailable() throws PulsarClientException { try { if (lastMessageIdInBroker.compareTo(lastDequeuedMessage) > 0 && ((MessageIdImpl)lastMessageIdInBroker).getEntryId() != -1) { return true; } return hasMessageAvailableAsync().get(); } catch (ExecutionException | InterruptedException e) { throw new PulsarClientException(e); } }
if (id.compareTo(lastMessageId) == 0) { loopPromise.complete(new PhaseOneResult(first, to, lastMessageId, latestForKey)); } else {