Record Class Message<T>

java.lang.Object
java.lang.Record
com.iantapply.relay.api.Message<T>
Type Parameters:
T - payload type
Record Components:
id - unique message identifier
topic - topic through which the message was decoded
payload - decoded payload
origin - identifier of the publishing node
destination - destination selected by the publisher
createdAt - publishing timestamp
correlationId - related message identifier, or null
headers - immutable application metadata

public record Message<T>(MessageId id, Topic<T> topic, T payload, String origin, Destination destination, Instant createdAt, MessageId correlationId, Map<String,String> headers) extends Record
A decoded message delivered to a topic subscriber.
  • Constructor Details

    • Message

      public Message(MessageId id, Topic<T> topic, T payload, String origin, Destination destination, Instant createdAt, MessageId correlationId, Map<String,String> headers)
      Creates a message and defensively copies its headers.
      Parameters:
      id - unique message identifier
      topic - decoding topic
      payload - decoded payload
      origin - publishing node identifier
      destination - intended recipients
      createdAt - publishing timestamp
      correlationId - related message identifier, or null
      headers - application metadata
  • Method Details

    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • id

      public MessageId id()
      Returns the value of the id record component.
      Returns:
      the value of the id record component
    • topic

      public Topic<T> topic()
      Returns the value of the topic record component.
      Returns:
      the value of the topic record component
    • payload

      public T payload()
      Returns the value of the payload record component.
      Returns:
      the value of the payload record component
    • origin

      public String origin()
      Returns the value of the origin record component.
      Returns:
      the value of the origin record component
    • destination

      public Destination destination()
      Returns the value of the destination record component.
      Returns:
      the value of the destination record component
    • createdAt

      public Instant createdAt()
      Returns the value of the createdAt record component.
      Returns:
      the value of the createdAt record component
    • correlationId

      public MessageId correlationId()
      Returns the value of the correlationId record component.
      Returns:
      the value of the correlationId record component
    • headers

      public Map<String,String> headers()
      Returns the value of the headers record component.
      Returns:
      the value of the headers record component