Package org.apache.pulsar.broker.service
Class Producer
- java.lang.Object
-
- org.apache.pulsar.broker.service.Producer
-
public class Producer extends java.lang.ObjectRepresents a currently connected producer.
-
-
Constructor Summary
Constructors Constructor Description Producer(Topic topic, TransportCnx cnx, long producerId, java.lang.String producerName, java.lang.String appId, boolean isEncrypted, java.util.Map<java.lang.String,java.lang.String> metadata, org.apache.pulsar.common.protocol.schema.SchemaVersion schemaVersion, long epoch, boolean userProvidedProducerName, org.apache.pulsar.common.api.proto.ProducerAccessMode accessMode, java.util.Optional<java.lang.Long> topicEpoch, boolean supportsPartialProducer)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancheckAndStartPublish(long producerId, long sequenceId, io.netty.buffer.ByteBuf headersAndPayload, long batchSize)voidcheckEncryption()java.util.concurrent.CompletableFuture<java.lang.Void>checkPermissionsAsync()java.util.concurrent.CompletableFuture<java.lang.Void>close(boolean removeFromTopic)Close the producer immediately if: a.voidcloseNow(boolean removeFromTopic)java.util.concurrent.CompletableFuture<java.lang.Void>disconnect()It closes the producer from server-side and sends command to client to disconnect producer from existing connection without closing that connection.org.apache.pulsar.common.api.proto.ProducerAccessModegetAccessMode()java.lang.StringgetClientAddress()TransportCnxgetCnx()longgetEpoch()longgetLastSequenceId()Return the sequence id of.java.util.Map<java.lang.String,java.lang.String>getMetadata()longgetProducerId()java.lang.StringgetProducerName()java.lang.StringgetRemoteCluster()org.apache.pulsar.common.protocol.schema.SchemaVersiongetSchemaVersion()org.apache.pulsar.common.policies.data.stats.PublisherStatsImplgetStats()TopicgetTopic()java.util.Optional<java.lang.Long>getTopicEpoch()booleanisDisconnecting()booleanisNonPersistentTopic()booleanisRemote()booleanisSuccessorTo(Producer other)Method to determine if this producer can replace another producer.booleanisUserProvidedProducerName()voidpublishMessage(long producerId, long lowestSequenceId, long highestSequenceId, io.netty.buffer.ByteBuf headersAndPayload, long batchSize, boolean isChunked, boolean isMarker)voidpublishMessage(long producerId, long sequenceId, io.netty.buffer.ByteBuf headersAndPayload, long batchSize, boolean isChunked, boolean isMarker)voidpublishTxnMessage(org.apache.pulsar.client.api.transaction.TxnID txnID, long producerId, long sequenceId, long highSequenceId, io.netty.buffer.ByteBuf headersAndPayload, long batchSize, boolean isChunked, boolean isMarker)voidrecordMessageDrop(int batchSize)java.lang.StringtoString()voidupdateRates()voidupdateRates(int numOfMessages, long msgSizeInBytes)
-
-
-
Constructor Detail
-
Producer
public Producer(Topic topic, TransportCnx cnx, long producerId, java.lang.String producerName, java.lang.String appId, boolean isEncrypted, java.util.Map<java.lang.String,java.lang.String> metadata, org.apache.pulsar.common.protocol.schema.SchemaVersion schemaVersion, long epoch, boolean userProvidedProducerName, org.apache.pulsar.common.api.proto.ProducerAccessMode accessMode, java.util.Optional<java.lang.Long> topicEpoch, boolean supportsPartialProducer)
-
-
Method Detail
-
isSuccessorTo
public boolean isSuccessorTo(Producer other)
Method to determine if this producer can replace another producer.- Parameters:
other- - producer to compare to this one- Returns:
- true if this producer is a subsequent instantiation of the same logical producer. Otherwise, false.
-
publishMessage
public void publishMessage(long producerId, long sequenceId, io.netty.buffer.ByteBuf headersAndPayload, long batchSize, boolean isChunked, boolean isMarker)
-
publishMessage
public void publishMessage(long producerId, long lowestSequenceId, long highestSequenceId, io.netty.buffer.ByteBuf headersAndPayload, long batchSize, boolean isChunked, boolean isMarker)
-
checkAndStartPublish
public boolean checkAndStartPublish(long producerId, long sequenceId, io.netty.buffer.ByteBuf headersAndPayload, long batchSize)
-
recordMessageDrop
public void recordMessageDrop(int batchSize)
-
getLastSequenceId
public long getLastSequenceId()
Return the sequence id of.- Returns:
- the sequence id
-
getCnx
public TransportCnx getCnx()
-
getTopic
public Topic getTopic()
-
getProducerName
public java.lang.String getProducerName()
-
getProducerId
public long getProducerId()
-
getMetadata
public java.util.Map<java.lang.String,java.lang.String> getMetadata()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
close
public java.util.concurrent.CompletableFuture<java.lang.Void> close(boolean removeFromTopic)
Close the producer immediately if: a. the connection is dropped b. it's a graceful close and no pending publish acks are left else wait for pending publish acks- Returns:
- completable future indicate completion of close
-
closeNow
public void closeNow(boolean removeFromTopic)
-
disconnect
public java.util.concurrent.CompletableFuture<java.lang.Void> disconnect()
It closes the producer from server-side and sends command to client to disconnect producer from existing connection without closing that connection.- Returns:
- Completable future indicating completion of producer close
-
updateRates
public void updateRates()
-
updateRates
public void updateRates(int numOfMessages, long msgSizeInBytes)
-
isRemote
public boolean isRemote()
-
getRemoteCluster
public java.lang.String getRemoteCluster()
-
getStats
public org.apache.pulsar.common.policies.data.stats.PublisherStatsImpl getStats()
-
isNonPersistentTopic
public boolean isNonPersistentTopic()
-
getEpoch
public long getEpoch()
-
isUserProvidedProducerName
public boolean isUserProvidedProducerName()
-
checkPermissionsAsync
public java.util.concurrent.CompletableFuture<java.lang.Void> checkPermissionsAsync()
-
checkEncryption
public void checkEncryption()
-
publishTxnMessage
public void publishTxnMessage(org.apache.pulsar.client.api.transaction.TxnID txnID, long producerId, long sequenceId, long highSequenceId, io.netty.buffer.ByteBuf headersAndPayload, long batchSize, boolean isChunked, boolean isMarker)
-
getSchemaVersion
public org.apache.pulsar.common.protocol.schema.SchemaVersion getSchemaVersion()
-
getAccessMode
public org.apache.pulsar.common.api.proto.ProducerAccessMode getAccessMode()
-
getTopicEpoch
public java.util.Optional<java.lang.Long> getTopicEpoch()
-
getClientAddress
public java.lang.String getClientAddress()
-
isDisconnecting
public boolean isDisconnecting()
-
-