@Override
  public boolean equals(Object obj) {
    if (this == obj)
      return true;
    if (obj == null)
      return false;
    if (getClass() != obj.getClass())
      return false;
    OutgoingMessageEnvelope other = (OutgoingMessageEnvelope) obj;
    if (key == null) {
      if (other.key != null)
        return false;
    } else if (!key.equals(other.key))
      return false;
    if (keySerializerName == null) {
      if (other.keySerializerName != null)
        return false;
    } else if (!keySerializerName.equals(other.keySerializerName))
      return false;
    if (message == null) {
      if (other.message != null)
        return false;
    } else if (!message.equals(other.message))
      return false;
    if (messageSerializerName == null) {
      if (other.messageSerializerName != null)
        return false;
    } else if (!messageSerializerName.equals(other.messageSerializerName))
      return false;
    if (partitionKey == null) {
      if (other.partitionKey != null)
        return false;
    } else if (!partitionKey.equals(other.partitionKey))
      return false;
    if (systemStream == null) {
      if (other.systemStream != null)
        return false;
    } else if (!systemStream.equals(other.systemStream))
      return false;
    return true;
  }
Constructs a new OutgoingMessageEnvelope from specified components.
@param systemStream Object representing the appropriate stream of which this envelope will be sent on.
@param message A deserialized message to be sent in this envelope.
samza-api/src/main/java/org/apache/samza/system/OutgoingMessageEnvelope.java