All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.hstream.ConsumerBuilder Maven / Gradle / Ivy

package io.hstream;

/** A builder for {@link Consumer}s. */
public interface ConsumerBuilder {

  /**
   * Optional, if not provided, the ConsumerBuilder will generate a unique name.
   *
   * @param name consumer name
   * @return the ConsumerBuilder instance
   */
  ConsumerBuilder name(String name);

  /**
   * Positional
   *
   * @param subscription subscription name
   * @return the ConsumerBuilder instance
   */
  ConsumerBuilder subscription(String subscription);

  /**
   * Optional, when the consumer receives raw records, rawRecordReceiver is executed sequentially
   * for each record, if rawRecordReceiver throws an exception, the consumer will ignore it and
   * consume the next record.
   *
   * @param rawRecordReceiver raw record receiver
   * @return the ConsumerBuilder instance
   */
  ConsumerBuilder rawRecordReceiver(RawRecordReceiver rawRecordReceiver);

  /**
   * Same as rawRecordReceiver except receiving HRecord instead of raw record.
   *
   * @param hRecordReceiver HRecord receiver
   * @return the ConsumerBuilder instance
   */
  ConsumerBuilder hRecordReceiver(HRecordReceiver hRecordReceiver);

  /**
   * When {@link Responder}.ack() is called, the consumer will not send it to servers immediately,
   * the ack request will be buffered until the ack count reaches ackBufferSize or the consumer is
   * stopping.
   *
   * @param ackBufferSize ack buffer size
   * @return the ConsumerBuilder instance
   */
  ConsumerBuilder ackBufferSize(int ackBufferSize);

  /**
   * Optional, default: 100(ms), the value should be less than Subscription.ackTimeoutSeconds.
   *
   * @param ackAgeLimit the ack age limit(Milliseconds)
   * @return the ConsumerBuilder instance
   */
  ConsumerBuilder ackAgeLimit(long ackAgeLimit);

  Consumer build();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy