Class KafkaMessageEnvelope

java.lang.Object
org.apache.avro.specific.SpecificRecordBase
com.linkedin.venice.kafka.protocol.KafkaMessageEnvelope
All Implemented Interfaces:
Externalizable, Serializable, Comparable<org.apache.avro.specific.SpecificRecord>, org.apache.avro.generic.GenericContainer, org.apache.avro.generic.GenericRecord, org.apache.avro.generic.IndexedRecord, org.apache.avro.specific.SpecificRecord

public class KafkaMessageEnvelope extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord
See Also:
  • Field Details

    • SCHEMA$

      public static final org.apache.avro.Schema SCHEMA$
    • messageType

      public int messageType
      Using int because Avro Enums are not evolvable. Readers should always handle the 'unknown' value edge case, to account for future evolutions of this protocol. The mapping is the following: 0 => Put, 1 => Delete, 2 => ControlMessage, 3 => Update.
    • producerMetadata

      public ProducerMetadata producerMetadata
      ProducerMetadata contains information that the consumer can use to identify an upstream producer. This is common for all MessageType.
    • payloadUnion

      public Object payloadUnion
      This contains the main payload of the message. Which branch of the union is present is based on the previously-defined MessageType field.
    • leaderMetadataFooter

      public LeaderMetadata leaderMetadataFooter
      A optional footer that leader SN can use to give extra L/F related mete data
  • Constructor Details

    • KafkaMessageEnvelope

      public KafkaMessageEnvelope()
      Default constructor. Note that this does not initialize fields to their default values from the schema. If that is desired then one should use newBuilder().
    • KafkaMessageEnvelope

      public KafkaMessageEnvelope(Integer messageType, ProducerMetadata producerMetadata, Object payloadUnion, LeaderMetadata leaderMetadataFooter)
      All-args constructor.
      Parameters:
      messageType - Using int because Avro Enums are not evolvable. Readers should always handle the 'unknown' value edge case, to account for future evolutions of this protocol. The mapping is the following: 0 => Put, 1 => Delete, 2 => ControlMessage, 3 => Update.
      producerMetadata - ProducerMetadata contains information that the consumer can use to identify an upstream producer. This is common for all MessageType.
      payloadUnion - This contains the main payload of the message. Which branch of the union is present is based on the previously-defined MessageType field.
      leaderMetadataFooter - A optional footer that leader SN can use to give extra L/F related mete data
  • Method Details

    • getClassSchema

      public static org.apache.avro.Schema getClassSchema()
    • getSpecificData

      public org.apache.avro.specific.SpecificData getSpecificData()
      Overrides:
      getSpecificData in class org.apache.avro.specific.SpecificRecordBase
    • getSchema

      public org.apache.avro.Schema getSchema()
      Specified by:
      getSchema in interface org.apache.avro.generic.GenericContainer
      Specified by:
      getSchema in class org.apache.avro.specific.SpecificRecordBase
    • get

      public Object get(int field$)
      Specified by:
      get in interface org.apache.avro.generic.IndexedRecord
      Specified by:
      get in class org.apache.avro.specific.SpecificRecordBase
    • put

      public void put(int field$, Object value$)
      Specified by:
      put in interface org.apache.avro.generic.IndexedRecord
      Specified by:
      put in class org.apache.avro.specific.SpecificRecordBase
    • getMessageType

      public int getMessageType()
      Gets the value of the 'messageType' field.
      Returns:
      Using int because Avro Enums are not evolvable. Readers should always handle the 'unknown' value edge case, to account for future evolutions of this protocol. The mapping is the following: 0 => Put, 1 => Delete, 2 => ControlMessage, 3 => Update.
    • setMessageType

      public void setMessageType(int value)
      Sets the value of the 'messageType' field. Using int because Avro Enums are not evolvable. Readers should always handle the 'unknown' value edge case, to account for future evolutions of this protocol. The mapping is the following: 0 => Put, 1 => Delete, 2 => ControlMessage, 3 => Update.
      Parameters:
      value - the value to set.
    • getProducerMetadata

      public ProducerMetadata getProducerMetadata()
      Gets the value of the 'producerMetadata' field.
      Returns:
      ProducerMetadata contains information that the consumer can use to identify an upstream producer. This is common for all MessageType.
    • setProducerMetadata

      public void setProducerMetadata(ProducerMetadata value)
      Sets the value of the 'producerMetadata' field. ProducerMetadata contains information that the consumer can use to identify an upstream producer. This is common for all MessageType.
      Parameters:
      value - the value to set.
    • getPayloadUnion

      public Object getPayloadUnion()
      Gets the value of the 'payloadUnion' field.
      Returns:
      This contains the main payload of the message. Which branch of the union is present is based on the previously-defined MessageType field.
    • setPayloadUnion

      public void setPayloadUnion(Object value)
      Sets the value of the 'payloadUnion' field. This contains the main payload of the message. Which branch of the union is present is based on the previously-defined MessageType field.
      Parameters:
      value - the value to set.
    • getLeaderMetadataFooter

      public LeaderMetadata getLeaderMetadataFooter()
      Gets the value of the 'leaderMetadataFooter' field.
      Returns:
      A optional footer that leader SN can use to give extra L/F related mete data
    • setLeaderMetadataFooter

      public void setLeaderMetadataFooter(LeaderMetadata value)
      Sets the value of the 'leaderMetadataFooter' field. A optional footer that leader SN can use to give extra L/F related mete data
      Parameters:
      value - the value to set.
    • writeExternal

      public void writeExternal(ObjectOutput out) throws IOException
      Specified by:
      writeExternal in interface Externalizable
      Overrides:
      writeExternal in class org.apache.avro.specific.SpecificRecordBase
      Throws:
      IOException
    • readExternal

      public void readExternal(ObjectInput in) throws IOException
      Specified by:
      readExternal in interface Externalizable
      Overrides:
      readExternal in class org.apache.avro.specific.SpecificRecordBase
      Throws:
      IOException