Interface MessageSpecBuilder<T>

Type Parameters:
T - the message payload type

public interface MessageSpecBuilder<T>
Builder interface for MessageSpec.
  • Method Details

    • key

      Sets the key of the message for routing policy.
      Parameters:
      key - the partitioning key for the message
      Returns:
      the message builder instance
    • keyBytes

      MessageSpecBuilder<T> keyBytes(byte[] key)
      Sets the bytes of the key of the message for routing policy. Internally the bytes will be base64 encoded.
      Parameters:
      key - routing key for message, in byte array form
      Returns:
      the message builder instance
    • orderingKey

      MessageSpecBuilder<T> orderingKey(byte[] orderingKey)
      Sets the ordering key of the message for message dispatch in SubscriptionType.Key_Shared mode. Partition key Will be used if ordering key not specified.
      Parameters:
      orderingKey - the ordering key for the message
      Returns:
      the message builder instance
    • value

      MessageSpecBuilder<T> value(T value)
      Set a domain object on the message.
      Parameters:
      value - the domain object
      Returns:
      the message builder instance
    • property

      MessageSpecBuilder<T> property(String name, String value)
      Sets a new property on a message.
      Parameters:
      name - the name of the property
      value - the associated value
      Returns:
      the message builder instance
    • properties

      MessageSpecBuilder<T> properties(Map<String,String> properties)
      Add all the properties in the provided map.
      Parameters:
      properties - properties to use
      Returns:
      the message builder instance
    • eventTime

      MessageSpecBuilder<T> eventTime(long timestamp)
      Set the event time for a given message.

      Applications can retrieve the event time by calling Message.getEventTime().

      Note: currently pulsar doesn't support event-time based index. so the subscribers can't seek the messages by event time.

      Parameters:
      timestamp - event timestamp (milliseconds since epoch)
      Returns:
      the message builder instance
    • sequenceId

      MessageSpecBuilder<T> sequenceId(long sequenceId)
      Specify a custom sequence id for the message being published.

      The sequence id can be used for deduplication purposes and it needs to follow these rules:

      1. sequenceId >= 0
      2. Sequence id for a message needs to be greater than sequence id for earlier messages: sequenceId(N+1) > sequenceId(N)
      3. It's not necessary for sequence ids to be consecutive. There can be holes between messages. Eg. the sequenceId could represent an offset or a cumulative size.
      Parameters:
      sequenceId - the sequence id to assign to the current message
      Returns:
      the message builder instance
    • replicationClusters

      MessageSpecBuilder<T> replicationClusters(List<String> clusters)
      Override the geo-replication clusters for this message.
      Parameters:
      clusters - the list of clusters.
      Returns:
      the message builder instance
    • disableReplication

      MessageSpecBuilder<T> disableReplication()
      Disable geo-replication for this message.
      Returns:
      the message builder instance
    • deliverAt

      MessageSpecBuilder<T> deliverAt(long timestamp)
      Deliver the message only at or after the specified absolute timestamp.

      The timestamp is milliseconds and based on UTC (eg: System.currentTimeMillis()).

      Note: messages are only delivered with delay when a consumer is consuming through a SubscriptionType.Shared subscription. With other subscription types, the messages will still be delivered immediately.

      Parameters:
      timestamp - absolute timestamp indicating when the message should be delivered to consumers
      Returns:
      the message builder instance
    • deliverAfter

      MessageSpecBuilder<T> deliverAfter(long delay, TimeUnit unit)
      Request to deliver the message only after the specified relative delay.

      Note: messages are only delivered with delay when a consumer is consuming through a SubscriptionType.Shared subscription. With other subscription types, the messages will still be delivered immediately.

      Parameters:
      delay - the amount of delay before the message will be delivered
      unit - the time unit for the delay
      Returns:
      the message builder instance
    • correlationMetadata

      MessageSpecBuilder<T> correlationMetadata(Object correlationMetadata)
      Attach a correlation metadata to the message spec to be able to correlate a sending operation and the sending operation result.
      Parameters:
      correlationMetadata - the correlation metadata to attach
      Returns:
      the message builder instance
    • build

      MessageSpec<T> build()
      Builds the MessageSpec.
      Returns:
      the built message spec