if (isConnected() && cnx.getRemoteEndpointProtocolVersion() >= ProtocolVersion.v2.getNumber()) { int messagesFromQueue = removeExpiredMessagesFromQueue(messageIds); Iterable<List<MessageIdImpl>> batches = Iterables.partition(
if (cnx.getRemoteEndpointProtocolVersion() < ProtocolVersion.v11.getNumber()) { Commands.skipChecksumIfPresent(metadataAndPayload);
if (isConnected() && cnx.getRemoteEndpointProtocolVersion() >= ProtocolVersion.v2.getNumber()) { int messagesFromQueue = removeExpiredMessagesFromQueue(messageIds); Iterable<List<MessageIdImpl>> batches = Iterables.partition(
@Override public void redeliverUnacknowledgedMessages() { ClientCnx cnx = cnx(); if (isConnected() && cnx.getRemoteEndpointProtocolVersion() >= ProtocolVersion.v2.getNumber()) { int currentSize = 0; synchronized (this) { currentSize = incomingMessages.size(); incomingMessages.clear(); unAckedMessageTracker.clear(); } cnx.ctx().writeAndFlush(Commands.newRedeliverUnacknowledgedMessages(consumerId), cnx.ctx().voidPromise()); if (currentSize > 0) { increaseAvailablePermits(cnx, currentSize); } if (log.isDebugEnabled()) { log.debug("[{}] [{}] [{}] Redeliver unacked messages and send {} permits", subscription, topic, consumerName, currentSize); } return; } if (cnx == null || (getState() == State.Connecting)) { log.warn("[{}] Client Connection needs to be established for redelivery of unacknowledged messages", this); } else { log.warn("[{}] Reconnecting the client to redeliver the messages.", this); cnx.ctx().close(); } }
private void handleKeepAliveTimeout() { if (!ctx.channel().isOpen()) { return; } if (!isHandshakeCompleted()) { log.warn("[{}] Pulsar Handshake was not completed within timeout, closing connection", ctx.channel()); ctx.close(); } else if (waitingForPingResponse && ctx.channel().config().isAutoRead()) { // We were waiting for a response and another keep-alive just completed. // If auto-read was disabled, it means we stopped reading from the connection, so we might receive the Ping // response later and thus not enforce the strict timeout here. log.warn("[{}] Forcing connection to close after keep-alive timeout", ctx.channel()); ctx.close(); } else if (remoteEndpointProtocolVersion >= ProtocolVersion.v1.getNumber()) { // Send keep alive probe to peer only if it supports the ping/pong commands, added in v1 if (log.isDebugEnabled()) { log.debug("[{}] Sending ping message", ctx.channel()); } waitingForPingResponse = true; ctx.writeAndFlush(Commands.newPing()); } else { if (log.isDebugEnabled()) { log.debug("[{}] Peer doesn't support keep-alive", ctx.channel()); } } }
public int brokerChecksumSupportedVersion() { return ProtocolVersion.v6.getNumber(); }
public static boolean peerSupportsGetLastMessageId(int peerVersion) { return peerVersion >= ProtocolVersion.v12.getNumber(); }
public boolean isBatchMessageCompatibleVersion() { return remoteEndpointProtocolVersion >= ProtocolVersion.v4.getNumber(); }
public static boolean peerSupportsMultiMessageAcknowledgment(int peerVersion) { return peerVersion >= ProtocolVersion.v12.getNumber(); }
public static boolean peerSupportsActiveConsumerListener(int peerVersion) { return peerVersion >= ProtocolVersion.v12.getNumber(); }
public void closeConsumer(Consumer consumer) { // removes consumer-connection from map and send close command to consumer if (log.isDebugEnabled()) { log.debug("[{}] Removed consumer: {}", remoteAddress, consumer); } long consumerId = consumer.consumerId(); consumers.remove(consumerId); if (remoteEndpointProtocolVersion >= v5.getNumber()) { ctx.writeAndFlush(Commands.newCloseConsumer(consumerId, -1L)); } else { close(); } }
public void closeProducer(Producer producer) { // removes producer-connection from map and send close command to producer if (log.isDebugEnabled()) { log.debug("[{}] Removed producer: {}", remoteAddress, producer); } long producerId = producer.getProducerId(); producers.remove(producerId); if (remoteEndpointProtocolVersion >= v5.getNumber()) { ctx.writeAndFlush(Commands.newCloseProducer(producerId, -1L)); } else { close(); } }
public static boolean peerSupportJsonSchemaAvroFormat(int peerVersion) { return peerVersion >= ProtocolVersion.v13.getNumber(); } }
private void handleKeepAliveTimeout() { if (!ctx.channel().isOpen()) { return; } if (!isHandshakeCompleted()) { log.warn("[{}] Pulsar Handshake was not completed within timeout, closing connection", ctx.channel()); ctx.close(); } else if (waitingForPingResponse && ctx.channel().config().isAutoRead()) { // We were waiting for a response and another keep-alive just completed. // If auto-read was disabled, it means we stopped reading from the connection, so we might receive the Ping // response later and thus not enforce the strict timeout here. log.warn("[{}] Forcing connection to close after keep-alive timeout", ctx.channel()); ctx.close(); } else if (remoteEndpointProtocolVersion >= ProtocolVersion.v1.getNumber()) { // Send keep alive probe to peer only if it supports the ping/pong commands, added in v1 if (log.isDebugEnabled()) { log.debug("[{}] Sending ping message", ctx.channel()); } waitingForPingResponse = true; ctx.writeAndFlush(Commands.newPing()); } else { if (log.isDebugEnabled()) { log.debug("[{}] Peer doesn't support keep-alive", ctx.channel()); } } }
@Override public void redeliverUnacknowledgedMessages() { ClientCnx cnx = cnx(); if (isConnected() && cnx.getRemoteEndpointProtocolVersion() >= ProtocolVersion.v2.getNumber()) { int currentSize = 0; synchronized (this) { currentSize = incomingMessages.size(); incomingMessages.clear(); unAckedMessageTracker.clear(); } cnx.ctx().writeAndFlush(Commands.newRedeliverUnacknowledgedMessages(consumerId), cnx.ctx().voidPromise()); if (currentSize > 0) { increaseAvailablePermits(cnx, currentSize); } if (log.isDebugEnabled()) { log.debug("[{}] [{}] [{}] Redeliver unacked messages and send {} permits", subscription, topic, consumerName, currentSize); } return; } if (cnx == null || (getState() == State.Connecting)) { log.warn("[{}] Client Connection needs to be established for redelivery of unacknowledged messages", this); } else { log.warn("[{}] Reconnecting the client to redeliver the messages.", this); cnx.ctx().close(); } }
public static boolean peerSupportsGetLastMessageId(int peerVersion) { return peerVersion >= ProtocolVersion.v12.getNumber(); }
public int brokerChecksumSupportedVersion() { return ProtocolVersion.v6.getNumber(); }
public static boolean peerSupportsMultiMessageAcknowledgment(int peerVersion) { return peerVersion >= ProtocolVersion.v12.getNumber(); }